Skip to content

Commit ed17fa7

Browse files
committed
Ledger (d): separate Arm B's one-time attestation scan from counted range reads
attest -> read_keys scans both key columns of every row (addressed.rs:100-117, 7-10 ms for 100,002 keys); the 3k count is only the per-query range reads (SideIo.rows_scanned). K13, C46 and the ADMISSION recommendation now name both costs. Codex review on #1636. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013z2e1YXkm6o6HNrDn5BPWA
1 parent 47e4ec5 commit ed17fa7

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

‎.claude/research/2026-10-recovery/LEDGER-REVISION-2026-10-20d.md‎

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ survive a read of the code:
3434
| C43 | Thought-git lab probe: oracle + signals + slot pool (63 live slots, FIFO / least-used eviction), 19 + 6 tests, 5 oracle disables red | #1630, #1631; `crates/thought-git-probe`; D-TGB-0/1 Shipped (lab) |
3535
| C44 | **The relalg width limit is gone.** `r2il::call_owned` releases consumed slots, so an `Or` / `And` / `And`-of-`Not` of any width runs in 3 slots (was `2k − 1`, 5 atoms refused) | #1634; `lance-graph-r2il/src/lib.rs:588`; tests `call_owned_reuses_consumed_slots_and_call_does_not`, `a_wide_disjunction_keeps_its_rows_in_constant_slots` |
3636
| C45 | Crepe as a cold optimizer in front of relalg, measured: verdict PARTIALLY (static path proven, dynamic rules need a `crepe-core` split); 3.6 µs vs 11.8 ms terminal at 50,000 rows, break-even reuse 0 | #1631–#1634; `crates/crepe-plan-probe`; entry `2026-10-20-crepe-rule-optimizer-spike.md` |
37-
| C46 | Addressed read (Arm B) over Lance 13 / lancedb 0.40: sorted `FacetCascade` keys, scans `3k` rows where the masked arm scans ≥ 150,000, 2.5–12× faster up to 1 % of centers, 7 ms attest repaid after 2–3 queries; stale lanes, unsorted tables and foreign datasets refused | #1633; `crepe-plan-probe/src/addressed.rs`; tests b1–b12 |
37+
| C46 | Addressed read (Arm B) over Lance 13 / lancedb 0.40: sorted `FacetCascade` keys; per query it scans `3k` rows where the masked arm scans ≥ 150,000, 2.5–12× faster up to 1 % of centers; the one-time attestation is a full scan of both key columns (7–10 ms for 100,002 keys), repaid after 2–3 queries; stale lanes, unsorted tables and foreign datasets refused | #1633; `crepe-plan-probe/src/addressed.rs`; tests b1–b12 |
3838
| C47 | MORK/PathMap probes measured: one `pathmap` package, 0 / 18 upstream files differ (D-MPS-0); differential probe (D-MPS-1); native join over a versioned relationship table, 7 guards disable-verified (D-MPS-8); focus-bound RelationshipMap probe, break-even 76 / 11 / 1.8 reuses (D-RMAP-1A-P) | #1620, #1621; `crates/mork-pathmap-probe` |
3939
| C48 | D-RMAP-2 partly measured: polyfill tier and AMX tile tier; BF16 byte total corrected to 384 KiB; re-run shows absolute times 10–60 % higher (VM load, unverified) with ratios intact | #1623, #1625–#1627 |
4040
| C49 | NAL revision of stratum beliefs equals the union recount (P-pool probe) | #1596; `lance-graph-planner/tests/simpson_revision_pooling.rs` |
@@ -84,10 +84,16 @@ Closed from (c): **D-46** (C40), **DOC-WIRE (1)** for 43..45 (C39; 50..52 stays
8484

8585
- **K13 — one admission ruling, and it already has a measured example.**
8686
ISS-ADMISSION-PREP-BINDING asks for "a counted, witnessed lookup in
87-
preparation, folds co-addressed". Arm B (C46) is exactly that: preparation
88-
attests the table (counted: rows scanned are reported, `3k`), refuses a stale
89-
lane or a foreign dataset (witnessed), and then reads only sorted ranges of
90-
the table's own key. Writing ADMISSION with Arm B as the worked example and
87+
preparation, folds co-addressed". Arm B (C46) has that shape, in two
88+
separate costs. **Attestation** is a one-time full scan of both key
89+
columns of every row (`addressed.rs:100-117`, `attest` → `read_keys`;
90+
7–10 ms for 100,002 keys over three tables), done once per table version
91+
and refused if the table is not sorted; it is what the witness rests on.
92+
**Each query** then reads only sorted ranges of the table's own key, and
93+
only these reads are counted (`SideIo.rows_scanned`, `3k` at 50,000 rows);
94+
a stale lane or a foreign dataset is refused (witnessed). The ruling has
95+
to name both: the per-query read is counted, the attestation scan is a
96+
stated one-time cost per version. Writing ADMISSION with Arm B as the worked example and
9197
`graph_hop.rs` as the counter-example (a hop whose positions come from
9298
another lane's values) answers D-MPS-8, D-RPR-1, D-RST-4/6 and GATHER-CODE
9399
in one record.
@@ -126,7 +132,7 @@ Closed from (c): **D-46** (C40), **DOC-WIRE (1)** for 43..45 (C39; 50..52 stays
126132

127133
| # | question | recommendation | caveat |
128134
|---|---|---|---|
129-
| ADMISSION | what a preparation-time read may do | admit counted, witnessed, same-table key-range seeks (Arm B shape); refuse reads at positions taken from another lane's values | `graph_hop.rs` then stays quarantined or is rewritten co-addressed |
135+
| ADMISSION | what a preparation-time read may do | admit counted, witnessed, same-table key-range seeks (Arm B shape), with the one-time full key scan that attests each table version stated as its own cost; refuse reads at positions taken from another lane's values | `graph_hop.rs` then stays quarantined or is rewritten co-addressed |
130136
| D-RA-2 | where single-table rules live | the contract set IR; relalg keeps lowering | relalg tests must pass unchanged against the contract IR (its own gate) |
131137
| WIRE-50 | order of 50..52 | as (c): keep the pyramid; "not on the ladder" only through D-MATURATION3-1 decision 3 | `wire.rs` re-pin |
132138
| ACTION-GATE | canonical gate; default for `required_role = None` | `commit_via` canonical; `None` allowed only for actions declared public | every `ActionDef` without a role needs a declaration |

0 commit comments

Comments
 (0)