diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index 3ba773792..922df7f54 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -1,3 +1,10 @@ +## 2026-11-01 — main after #1904–#1907 (merged `39511c92e`) + +- New workspace crate `lance-graph-xlog` (#1907): XLOG's admitted two-atom chain (support, bag count) described in Quack, evaluated by mask-risc, addressed by DT64/DR, run from an admitted bind-store method. No `xlog-*` or arrow dependency. `xlog-relcomp-probe` keeps XLOG admission and calls it. +- `lance_graph_dt64::dr::MapTable`, `MapRead`, `TileId` (#1905): the versioned global → local table. A tile's `LocalMap` is read only under the frame it was sealed under; `coordinates` is derived from the held maps. +- `lance_graph_contract::ogar_codebook::{HARDCODED_BEHAVIOUR, HARDCODED_BEHAVIOUR_DOMAIN}` (#1904), mirroring OGAR #365: no codebook row in `0xFFXX`. `lance_graph_r2il::polyfill::HARDCODED` reads it. +- D-DYNBAG-0 (#1906): the probe no longer calls `ndarray::simd` folds; only `mask_and` (elementwise alias) and `checked_binary_i64` (TRACKED, MISSING-3) remain direct. + ## 2026-10-31 — main after #1884 (merged `d3c2a29`) - `xlog-relcomp-probe` executes its admitted chain on `ndarray::simd`, binds the bag count through `lance-graph-dt64`, and pins the Epi5 reading of XLOG results. Lab only. diff --git a/.claude/board/PR_ARC_INVENTORY.md b/.claude/board/PR_ARC_INVENTORY.md index 70d036658..00bbe2dbf 100644 --- a/.claude/board/PR_ARC_INVENTORY.md +++ b/.claude/board/PR_ARC_INVENTORY.md @@ -1,3 +1,28 @@ +## 2026-11-01 — lance-graph PR #1907 (merged `39511c92e`, branch `ccr-85acaff0-oszq40-xlogcrate`, head `1087758d1`) — lance-graph-xlog: XLOG's admitted chain over Quack → mask-risc (D-XLOG-NATIVE-4) + +- **Added:** `crates/lance-graph-xlog` (workspace member): `Bounds`, `Intake`, `support`, `bag_count`, `bag_count_admitted`, `Word`, `Support`, `NativeRefusal`, `BoundRefusal`, `ids`, `nonzero`, and `and` (= `ndarray::simd::mask_and`). `xlog-relcomp-probe` now calls it and keeps `admit`, `admit_count`, `ChainQuery::bounds()`. +- **Locked:** plan `d-xlog-native-v1.md` Amendment D; deps Quack + mask-risc + DT64 + contract + ndarray (alias and TRACKED call only). +- **Deferred:** `p(X, Z)` and longer chains (NATIVE, refused at admission); MISSING-1/2/3/4 in owner crates. +- **Confidence:** 4 crate tests (scalar oracle under four bounds; `fn_addr_eq` against ndarray and `lance-graph-onnx`); N4 via `cargo tree -e normal`; probe suites green; disable run (bound ignored) red. Merged before Codex finished. + +## 2026-11-01 — lance-graph PR #1906 (merged `cbc909993`, branch `ccr-85acaff0-oszq40-dynbag0`, head `dc2099bb4`) — D-DYNBAG-0: XLOG probe through Quack → mask-risc, gated by the bind store + +- **Added:** probe `native.rs` runs support (`ScatterOrU32` ×2 + `mask_and`) and bag count (`GroupReduce Count` ×2 + checked product) through Quack `lower` and mask-risc `execute_into`; `Intake` (Y looked up once under a `MapTable` frame); `bag_count_admitted` (runs only from an admitted Bag `MethodBinding`, caller-read words). Probe deps gain Quack, mask-risc, contract. +- **Locked:** plan §17.7 gate table (gates 1–7 met). +- **Deferred:** the cost columns; MISSING-1/2/3/4. +- **Confidence:** probe suites green; 7 disable runs red; clippy clean. The probe has no CI line. + +## 2026-11-01 — lance-graph PR #1905 (merged `bc45e97db`, branch `ccr-85acaff0-oszq40-o5`, head `907426515`) — dr: MapTable, the versioned global → local table (D-DT64-7 O5) + +- **Added:** `dr::MapTable` (`new`, `advance`, `seal`, `revisions`, `map`), `MapRead { Stale, NoSuchTile }`, `TileId`; plan D-DT64-7 §1e. +- **Deferred:** stored selections (D7'), waiting on O4. +- **Confidence:** 4 tests in `tests/dr.rs`; 2 disable runs red (the tile-id case was added after the first version stayed green); Codex: no findings. + +## 2026-11-01 — lance-graph PR #1904 (merged `e9c7de5ac`, branch `ccr-85acaff0-oszq40-o2mirror`, head `e5304db78`) — contract: mirror OGAR's 0xFFXX hardcoded-behaviour reservation (D-DT64-7 O2) + +- **Added:** `ogar_codebook::HARDCODED_BEHAVIOUR`, `HARDCODED_BEHAVIOUR_DOMAIN`, guard test; `r2il::polyfill::HARDCODED` reads the contract constant. Board: D-XLOG-DR64-3 marked shipped (#1864). +- **Confidence:** contract lib 1563 passed; disable run (planted `0xFF01` row) red. + ## 2026-10-31 — lance-graph PR #1884 (merged `d3c2a29`, branch `ccr-85acaff0-oszq40`, head `1e85104`) — xlog-relcomp-probe: ndarray::simd execution, binding through lance-graph-dt64, Epi5 reading; plans D-SOC-FENCE and D-DYNBAG - **Added:** diff --git a/.claude/board/STATUS_BOARD.md b/.claude/board/STATUS_BOARD.md index 4ba1704cd..920a7808b 100644 --- a/.claude/board/STATUS_BOARD.md +++ b/.claude/board/STATUS_BOARD.md @@ -15,7 +15,7 @@ Plan: `.claude/plans/d-dt64-7-behaviour-addressing-registration-v1.md`. Docs onl | D-DT64-7-L1 | full-classid basis for behaviour lenses (contract `ClassView` accessor) | Queued | after L4 | | D-DT64-7-L5 | consumer `ClassView` + immutable basis witness at registration | Queued | after L1 | | D-DT64-7-L2 | host composition of DT64 and OGAR authorities + views, with activation checks (L3) | Queued | after L5 | -| D-DT64-7-5 | the versioned global → local table, a BindStore plan item (plan §1e; Litho is a mental model, folded into the bind store plan as D-DT64-6 Amendment A) | Core in PR: `dr::MapTable`; stored selections (D7') wait on O4 | O4 for the selection half | +| D-DT64-7-5 | the versioned global → local table, a BindStore plan item (plan §1e; Litho is a mental model, folded into the bind store plan as D-DT64-6 Amendment A) | Core shipped (#1905): `dr::MapTable`; stored selections (D7') wait on O4 | O4 for the selection half | ## D-MIST-NATIVE — Mistaber's Kripke holdings over the DR64 relation register (2026-10-30) @@ -37,7 +37,7 @@ Plan: `.claude/plans/d-dynbag-holographic-bags-v1.md`. Plan only. | D-id | Deliverable | Status | Gate | |---|---|---|---| -| D-DYNBAG-0 | PR #1884 layering fix: XLOG intake as lanes, support + bag count via Quack → mask-risc, fold oracles, cost columns | In PR: gates 1–7 (plan §17.7); cost columns not done | operator go-ahead (given 2026-11-01) | +| D-DYNBAG-0 | PR #1884 layering fix: XLOG intake as lanes, support + bag count via Quack → mask-risc, fold oracles, cost columns | Shipped (#1906): gates 1–7 (plan §17.7); cost columns not done | operator go-ahead (given 2026-11-01) | | D-DYNBAG-1 | ℕ-compose probe: `matmul_i8_to_i32` over two DR64² tiles for `p(X, Z)`; B projection = `relcomp::compose` | Queued | D-DYNBAG-0 | | D-DYNBAG-2 | semiring parameter K (B, ℕ) in relalg `Rel` + Quack surface; typed refusal per (op, K) | Queued | D-DYNBAG-1 | | D-DYNBAG-3 | missing ℕ words backend-first (i64 masked select, min, truncated minus, compare-to-mask, masked sum; maybe bit-packed product) | Queued | D-DYNBAG-2 | @@ -68,7 +68,7 @@ Plan: `.claude/plans/d-soc-fence-v1.md`. Plan only; nothing runs yet. | D-XLOG-NATIVE-1 | test the selection rows (eq/ne_u32_to_mask, i32 comparisons, mask_and/or/andnot) against the probe's two oracles, signatures checked | Queued | N2 | | D-XLOG-NATIVE-2 | test masked_group_count_u32 keyed by one table's column against the RIR walk, with the out-of-universe refusal | Queued | N2, N3 | | D-XLOG-NATIVE-3 | ask the ndarray / mask-risc owners for a native home for the many-to-many join (fixture: Gate B) | Queued | owner decision | -| D-XLOG-NATIVE-4 | create `crates/lance-graph-xlog` (shape per Amendment C/D: Quack + mask-risc + DT64, no `xlog-*` or arrow dep, no plan type) | In PR (stacked on D-DYNBAG-0) | N1, N4, N5 met; N2 scalar oracle in-crate + both oracles in the probe; N3 typed refusals | +| D-XLOG-NATIVE-4 | create `crates/lance-graph-xlog` (shape per Amendment C/D: Quack + mask-risc + DT64, no `xlog-*` or arrow dep, no plan type) | Shipped (#1907) | N1, N4, N5 met; N2 scalar oracle in-crate + both oracles in the probe; N3 typed refusals | | D-XLOG-NATIVE-6 | probe executes on `ndarray::simd` (`src/native.rs`): support via `eq_u32_to_mask` / `mask_scatter_or_u32` / `mask_and`, bag count via `masked_group_count_u32` ×2 + `checked_binary_i64`; DR `LocalMap` up to 256; register path kept as differential (plan Amendment B) | Shipped (#1884) | lab probe; layering fix is D-DYNBAG-0 | | D-XLOG-NATIVE-5 | bag count bound through the production bind store (`lance-graph-dt64` + `dt64::dr`), polyfill words by position; Epi5 reading of XLOG results pinned (plan Amendment A) | Shipped (#1884) | lab execution only | diff --git a/.claude/board/entries/2026-11-01-dynbag-0-xlog-through-quack-mask-risc.md b/.claude/board/entries/2026-11-01-dynbag-0-xlog-through-quack-mask-risc.md index c0c66615c..94afd98c1 100644 --- a/.claude/board/entries/2026-11-01-dynbag-0-xlog-through-quack-mask-risc.md +++ b/.claude/board/entries/2026-11-01-dynbag-0-xlog-through-quack-mask-risc.md @@ -1,6 +1,6 @@ # D-DYNBAG-0: the XLOG probe runs through Quack → mask-risc, gated by the bind store -**Date 2026-11-01 · ID D-DYNBAG-0 · Status IN PR · Plan `.claude/plans/d-dynbag-holographic-bags-v1.md` §17.7 · Crate `crates/xlog-relcomp-probe`** +**Date 2026-11-01 · ID D-DYNBAG-0 · Status SHIPPED · Plan `.claude/plans/d-dynbag-holographic-bags-v1.md` §17.7 · Crate `crates/xlog-relcomp-probe`** - `native.rs` describes each side as a Quack `Query` and runs it with mask-risc `execute_into`: - support: `ScatterOrU32`, then `mask_and`; diff --git a/.claude/board/entries/2026-11-01-lance-graph-xlog-crate.md b/.claude/board/entries/2026-11-01-lance-graph-xlog-crate.md index 419c55140..33901b3e3 100644 --- a/.claude/board/entries/2026-11-01-lance-graph-xlog-crate.md +++ b/.claude/board/entries/2026-11-01-lance-graph-xlog-crate.md @@ -1,6 +1,6 @@ # D-XLOG-NATIVE-4: `crates/lance-graph-xlog` -**Date 2026-11-01 · ID D-XLOG-NATIVE-4 · Status IN PR (stacked on D-DYNBAG-0) · Plan `.claude/plans/d-xlog-native-v1.md` Amendment D** +**Date 2026-11-01 · ID D-XLOG-NATIVE-4 · Status SHIPPED (stacked on D-DYNBAG-0) · Plan `.claude/plans/d-xlog-native-v1.md` Amendment D** A workspace crate holds XLOG's admitted two-atom chain over the substrate: - Quack describes it, mask-risc evaluates it, DT64/DR address it, and it runs from an admitted bind-store method. diff --git a/.claude/board/entries/2026-11-01-maptable-versioned-local-map.md b/.claude/board/entries/2026-11-01-maptable-versioned-local-map.md index 811685322..138442c6c 100644 --- a/.claude/board/entries/2026-11-01-maptable-versioned-local-map.md +++ b/.claude/board/entries/2026-11-01-maptable-versioned-local-map.md @@ -1,6 +1,6 @@ # D-DT64-7-5: `dr::MapTable`, the versioned global → local table -**Date 2026-11-01 · ID D-DT64-7-5 · Status IN PR · Plan `.claude/plans/d-dt64-7-behaviour-addressing-registration-v1.md` §1e** +**Date 2026-11-01 · ID D-DT64-7-5 · Status SHIPPED · Plan `.claude/plans/d-dt64-7-behaviour-addressing-registration-v1.md` §1e** `LocalMap` and `FrameStore` existed, and `LocalMap::digest` was documented as the frame's `coordinates` revision, but nothing tied a map to its frame. `MapTable` holds every tile's `LocalMap` under one `FrameStore`: