From 8c0fbc4c2458003be6c81fc7802ddf7c11b7e4e2 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 2 Nov 2026 16:19:30 +0000 Subject: [PATCH 1/3] board: D-CODEGRAPH-0-BIN PR A in review (ruff #133); writer decisions recorded in the plan Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01X6y3drwKSE2zSgoexheLFX --- .claude/board/STATUS_BOARD.md | 2 +- .claude/plans/d-codegraph-0-binary-lanes-v1.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.claude/board/STATUS_BOARD.md b/.claude/board/STATUS_BOARD.md index bf650c3fd..d59354f68 100644 --- a/.claude/board/STATUS_BOARD.md +++ b/.claude/board/STATUS_BOARD.md @@ -241,7 +241,7 @@ Plan: [d-codegraph-0-resident-codegraph-v1.md](../plans/d-codegraph-0-resident-c | **D-CODEGRAPH-0-B** | resident rows via the ruff sink; per-file digests; incremental invalidation | LANDED (offline form): ruff #130 (merged `95be2e480b`; offline store in `ruff_charon`; `RefinedTruthSink` not reused, typed to R2IL). Incremental == clean on the fixture, byte-identical; skipped dependent leaves exactly one dangling edge. Follow-up fixes in ruff #131 (open). Lance-graph SoA residency still open | clean import == incremental import | | **D-CODEGRAPH-0-C** | callers / callees / impact / diagnostics; tiled closure; body → R2IL design check | SHIPPED (fixture scale): ruff #132 (merged `ed8fd4194f`, rows v2) + lance-graph #1921 (merged `4ab93bf3e`), `crates/lance-graph-codegraph` (queries as confirmed / possible / unknown masks over the xlog cube; dead function, unresolved call, dangling call; unused import NOT_RUN). 27 tests, 12 disable runs red. Tiled closure deferred: refusals `ClosureWidth` (> 64) and `TooMany` (> 256) are surfaced as typed UNKNOWN | each guard disable-verified; unused import proven only without macros, traits, globs, re-exports | | **D-CODEGRAPH-0-C2** | wide closure (multi-word rows, block presence), multi-tile cube, merge-on-read refresh, interned lanes | SHIPPED: #1923 (merged `2e19a5adc`). Impact over any size; mask-risc store (695 symbols, 3 tiles): impact 286 ns, callers 29 µs, references 45 µs; refresh of an unchanged crate 1.5–1.7 ms = FAILED gate (reading the 2.5 MB text file), fixed by D-CODEGRAPH-0-BIN. `refresh_crate` atomic (prepare → validate → commit: staged interner, positions, tile map, `Cube::stage`, closure; commit has no error path); codegraph suites now in `rust-test.yml` | narrow vs wide bit-identical ≤ 64; BFS reference on 694 positions; refresh == clean open; a refused refresh changes nothing (NeedsReopen, injected stage and closure refusals; no version issued); retry == the refresh that never failed, call-site multiplicity included; 7 disable runs red | -| **D-CODEGRAPH-0-BIN** | ruff_charon binary row lanes + header digest; codec9 small codebooks; Quack counting; no strings in the hot path; provenance header + per-row `(artifact, FunDeclId)`; `INVOKES_WORD` to a registered DT64 word | QUEUED: plan `d-codegraph-0-binary-lanes-v1.md` (operator: graph-wide u32 ids, TSV kept as debug `open_tsv`; Amendment A §8: PROV section, FUNDECL/ARTREF lanes, `INVOKES_WORD`, F9–F12). Ruff writer PR first, then the codegraph reader. OPEN: source of the "function realises word" association | unchanged refresh ≤ 20 µs; changed-crate open ≤ 1 ms; binary == TSV row for row | +| **D-CODEGRAPH-0-BIN** | ruff_charon binary row lanes + header digest; codec9 small codebooks; Quack counting; no strings in the hot path; provenance header + per-row `(artifact, FunDeclId)`; `INVOKES_WORD` to a registered DT64 word | IN PR (writer): ruff #133 `ruff_charon` `store_bin.rs` + `Store` wiring — format §2 + PROV/FUNDECL/OBJ_KIND (ARTREF elided, one artifact), verifying reader with one refusal per shape, golden `cg_lib.rows.bin`; 32 new tests, 6 disables red; TSV export stays ON by default until PR B (lance-graph reader) lands, then flips; `INVOKES_WORD` still OPEN (association source). Plan `d-codegraph-0-binary-lanes-v1.md` (operator: graph-wide u32 ids, TSV kept as debug `open_tsv`; Amendment A §8: PROV section, FUNDECL/ARTREF lanes, `INVOKES_WORD`, F9–F12). Ruff writer PR first, then the codegraph reader. OPEN: source of the "function realises word" association | unchanged refresh ≤ 20 µs; changed-crate open ≤ 1 ms; binary == TSV row for row | | **D-TGL-0** | GitHub-analogue Thought-Git lifecycle as a shared contract (branch → change → diff → PR → checks → review → rebase/squash → land → receipt/replay; rework / discard) for Codegraph, DT64, XLOG | CONTRACT (docs): plan `thought-git-lifecycle-contract-v1.md`; PR states are readings of existing records, no workflow engine | each step expressible with listed primitives | | **D-TGL-LAB** | Codegraph lab: F-LAND / F-DISCARD | SHIPPED (lab, crate-private): `prepare_refresh` / `commit_refresh` with a generation fence (`RefreshRefusal::Stale`); second branch recomputed against current W0 == clean open incl. call-site counts; discard leaves W0 unchanged; 2 disables red (without the fence only a `debug_assert` catches the collision) | not a production land | | **D-TGL-G8** | bag semantics: merge source revisions, never raw edge ADDs | DECIDED (contract §4) | 5 call sites from two sources after both land (F-LAND) | diff --git a/.claude/plans/d-codegraph-0-binary-lanes-v1.md b/.claude/plans/d-codegraph-0-binary-lanes-v1.md index 9a389c1f6..7e121f389 100644 --- a/.claude/plans/d-codegraph-0-binary-lanes-v1.md +++ b/.claude/plans/d-codegraph-0-binary-lanes-v1.md @@ -195,6 +195,7 @@ Counting (ruling 1: Quack's concern, executed by mask-risc on ndarray): (6.8-10.3 ms / 1.5-1.7 ms) are the baseline quoted beside, not re-derived. ## 6. Steps and PR order +**Status 2026-11-02:** PR A is ruff #133 (branch `claude/codegraph-bin-writer`). DECIDED in that PR: the TSV export stays on by default until PR B reads `rows.bin` (the current reader would otherwise see no rows); `Store::rows` falls back to `rows.tsv` for crates stored before the format. Tags and the codec9 id mapping are fixed in `ruff_charon/src/store_bin.rs` (`tag` module); PR B reads them from there. The digest golden vectors (`""` → `0xd0dd3f66b4263ceb`, `"a"` → `0x9fc75a5c9bce51be`, `"CHRNROWS digest golden v1"` → `0xfe0ab233a40027ce`) come from an independent port and must be asserted against `artifact::digest` in PR B. Note: `artifact::digest` folds the length through `Hasher::write_u64`'s default, i.e. native-endian bytes; the writer folds little-endian bytes, so the two agree only on little-endian hosts until PR B makes the reader explicit. PR A (ruff, writer first): - SONNET (ruff worker): `crates/ruff_charon/src/store.rs` + new `store_bin.rs` only: format writer, codebooks, SYM_HASH/SYM_OWNER, TSV export flag, `rows()` From 63de4b39a7e059ac208a686be0e420d619f1e7b0 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 2 Nov 2026 16:55:37 +0000 Subject: [PATCH 2/3] board: D-CODEGRAPH-0-BIN writer merged (ruff #133), follow-up ruff #134 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01X6y3drwKSE2zSgoexheLFX --- .claude/board/STATUS_BOARD.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/board/STATUS_BOARD.md b/.claude/board/STATUS_BOARD.md index d59354f68..9c7aebb21 100644 --- a/.claude/board/STATUS_BOARD.md +++ b/.claude/board/STATUS_BOARD.md @@ -241,7 +241,7 @@ Plan: [d-codegraph-0-resident-codegraph-v1.md](../plans/d-codegraph-0-resident-c | **D-CODEGRAPH-0-B** | resident rows via the ruff sink; per-file digests; incremental invalidation | LANDED (offline form): ruff #130 (merged `95be2e480b`; offline store in `ruff_charon`; `RefinedTruthSink` not reused, typed to R2IL). Incremental == clean on the fixture, byte-identical; skipped dependent leaves exactly one dangling edge. Follow-up fixes in ruff #131 (open). Lance-graph SoA residency still open | clean import == incremental import | | **D-CODEGRAPH-0-C** | callers / callees / impact / diagnostics; tiled closure; body → R2IL design check | SHIPPED (fixture scale): ruff #132 (merged `ed8fd4194f`, rows v2) + lance-graph #1921 (merged `4ab93bf3e`), `crates/lance-graph-codegraph` (queries as confirmed / possible / unknown masks over the xlog cube; dead function, unresolved call, dangling call; unused import NOT_RUN). 27 tests, 12 disable runs red. Tiled closure deferred: refusals `ClosureWidth` (> 64) and `TooMany` (> 256) are surfaced as typed UNKNOWN | each guard disable-verified; unused import proven only without macros, traits, globs, re-exports | | **D-CODEGRAPH-0-C2** | wide closure (multi-word rows, block presence), multi-tile cube, merge-on-read refresh, interned lanes | SHIPPED: #1923 (merged `2e19a5adc`). Impact over any size; mask-risc store (695 symbols, 3 tiles): impact 286 ns, callers 29 µs, references 45 µs; refresh of an unchanged crate 1.5–1.7 ms = FAILED gate (reading the 2.5 MB text file), fixed by D-CODEGRAPH-0-BIN. `refresh_crate` atomic (prepare → validate → commit: staged interner, positions, tile map, `Cube::stage`, closure; commit has no error path); codegraph suites now in `rust-test.yml` | narrow vs wide bit-identical ≤ 64; BFS reference on 694 positions; refresh == clean open; a refused refresh changes nothing (NeedsReopen, injected stage and closure refusals; no version issued); retry == the refresh that never failed, call-site multiplicity included; 7 disable runs red | -| **D-CODEGRAPH-0-BIN** | ruff_charon binary row lanes + header digest; codec9 small codebooks; Quack counting; no strings in the hot path; provenance header + per-row `(artifact, FunDeclId)`; `INVOKES_WORD` to a registered DT64 word | IN PR (writer): ruff #133 `ruff_charon` `store_bin.rs` + `Store` wiring — format §2 + PROV/FUNDECL/OBJ_KIND (ARTREF elided, one artifact), verifying reader with one refusal per shape, golden `cg_lib.rows.bin`; 32 new tests, 6 disables red; TSV export stays ON by default until PR B (lance-graph reader) lands, then flips; `INVOKES_WORD` still OPEN (association source). Plan `d-codegraph-0-binary-lanes-v1.md` (operator: graph-wide u32 ids, TSV kept as debug `open_tsv`; Amendment A §8: PROV section, FUNDECL/ARTREF lanes, `INVOKES_WORD`, F9–F12). Ruff writer PR first, then the codegraph reader. OPEN: source of the "function realises word" association | unchanged refresh ≤ 20 µs; changed-crate open ≤ 1 ms; binary == TSV row for row | +| **D-CODEGRAPH-0-BIN** | ruff_charon binary row lanes + header digest; codec9 small codebooks; Quack counting; no strings in the hot path; provenance header + per-row `(artifact, FunDeclId)`; `INVOKES_WORD` to a registered DT64 word | WRITER SHIPPED: ruff #133 merged `6c3d1bf8da` (follow-up ruff #134: stale `rows.tsv` removed when export is off; section offsets past 4 GiB refused, both from Codex review); reader PR B unblocked. ruff #133 `ruff_charon` `store_bin.rs` + `Store` wiring — format §2 + PROV/FUNDECL/OBJ_KIND (ARTREF elided, one artifact), verifying reader with one refusal per shape, golden `cg_lib.rows.bin`; 32 new tests, 6 disables red; TSV export stays ON by default until PR B (lance-graph reader) lands, then flips; `INVOKES_WORD` still OPEN (association source). Plan `d-codegraph-0-binary-lanes-v1.md` (operator: graph-wide u32 ids, TSV kept as debug `open_tsv`; Amendment A §8: PROV section, FUNDECL/ARTREF lanes, `INVOKES_WORD`, F9–F12). Ruff writer PR first, then the codegraph reader. OPEN: source of the "function realises word" association | unchanged refresh ≤ 20 µs; changed-crate open ≤ 1 ms; binary == TSV row for row | | **D-TGL-0** | GitHub-analogue Thought-Git lifecycle as a shared contract (branch → change → diff → PR → checks → review → rebase/squash → land → receipt/replay; rework / discard) for Codegraph, DT64, XLOG | CONTRACT (docs): plan `thought-git-lifecycle-contract-v1.md`; PR states are readings of existing records, no workflow engine | each step expressible with listed primitives | | **D-TGL-LAB** | Codegraph lab: F-LAND / F-DISCARD | SHIPPED (lab, crate-private): `prepare_refresh` / `commit_refresh` with a generation fence (`RefreshRefusal::Stale`); second branch recomputed against current W0 == clean open incl. call-site counts; discard leaves W0 unchanged; 2 disables red (without the fence only a `debug_assert` catches the collision) | not a production land | | **D-TGL-G8** | bag semantics: merge source revisions, never raw edge ADDs | DECIDED (contract §4) | 5 call sites from two sources after both land (F-LAND) | From cc9b1b71c7ac817f09a89c6455e968cc511366d7 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 2 Nov 2026 16:55:56 +0000 Subject: [PATCH 3/3] board: post-merge record for #1927; carry the BIN board updates made after its merge point Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01X6y3drwKSE2zSgoexheLFX --- .claude/board/LATEST_STATE.md | 4 ++++ .claude/board/PR_ARC_INVENTORY.md | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index 431853cfe..83ab18074 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -1,3 +1,7 @@ +## 2026-11-02 — main after #1927 (merged `6768811df`) + +- DT64 method-authority census (D-DT64-AUTH): a committed table and a two-way ratchet in `lance-graph-r2il` and `lance-graph-xlog` tests. + ## 2026-11-02 — main after #1926 (merged `ade765d6f`) - Codegraph: the G10 × G11 publication lab (L1–L6) — prepared land, fenced durable commit, crash recovery from the durable record, branch-local routing. D-TGL-PUB lab steps 1–3 are complete; EXO-148 stays locked. diff --git a/.claude/board/PR_ARC_INVENTORY.md b/.claude/board/PR_ARC_INVENTORY.md index f594c4ff3..47c2a5522 100644 --- a/.claude/board/PR_ARC_INVENTORY.md +++ b/.claude/board/PR_ARC_INVENTORY.md @@ -1,3 +1,14 @@ +## 2026-11-02 — lance-graph PR #1927 (merged `6768811df`, branch `claude/clone-repositories-71a5sw`) — D-DT64-AUTH method-authority census; post-merge record for #1926 + +- **Added:** + - `crates/lance-graph-r2il/dt64-authority-census.tsv`: 2 LENS rows (F000 polyfill, F100 XLOG) and 6 LAB rows (`MethodSignature`, tract `Registry`, XLOG `Word`, `FnIndex`, `FoldDialect`, `procs`). + - r2il census test: two-way lens-mint sweep, polyfill declaration replay, stale-exception check, can-fire and silence tests. An XLOG test checks its own row. + - Post-merge record for #1926. +- **Locked:** DT64 is the one method authority; every production behaviour lens is pinned by its declaration; every deviation is listed with a removal path. +- **Deferred:** migrating any adapter; executing through DT64; lens mints spelled as raw literals are not seen by the sweep. +- **Confidence:** r2il 6 + xlog 1 tests; 4 disables red. +- **Stranded:** two board commits made after the merge point (D-CODEGRAPH-0-BIN writer in review, then merged as ruff #133); carried by the next PR. + ## 2026-11-02 — lance-graph PR #1926 (merged `ade765d6f`, branch `claude/clone-repositories-71a5sw`) — D-TGL-PUB step 3: G10 × G11 publication lab, falsifiers L1–L6 - **Added:**