Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@
- #1874 landed the co-research hydration map and the DR64³ contraction test.
- No contract type changed.

## 2026-10-31 — main after #1869 and #1871 (`lance-graph-dt64`)

- New production crate `crates/lance-graph-dt64` (contract-only): the bind store (D-DT64-6 A.5). It holds classes, methods, K3 guards, ordered effects and one resolve, plus the polyfill as one lens classid.
- The thin-provisioned extent and the `dr` addressing module are not on main yet; they are in the follow-up PR.

## 2026-10-30 — main after #1862 (merged `abe0b7afc`)

- #1862 landed docs and two tests: D-DT64-6 Amendment A, the Morton aligned-square test, and the mask-risc dose test; D-LITHO folded into D-DT64-6.
Expand Down
21 changes: 21 additions & 0 deletions .claude/board/PR_ARC_INVENTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,27 @@
- **Reverted inside the PR:** the #1879 commits. That PR, which put the address in the row key, answered a question selected by mistake and was closed unmerged.
- **Confidence:** LAB, measured: 25 tests + 2 doctests; disable runs M1, M3 and M4 red; M2 (seif dedup) recorded as representation, not addressing. Merged before Codex and CI finished.

## 2026-10-30 — lance-graph PR #1871 (merged `e1df34da1`, branch `ccr-45a41fb4-0j3i0l`, head `6a0124a06`) — lance-graph-dt64: the polyfill as one lens classid; DR extent; fmt fix

- **Added:**
- The polyfill vocabulary is one lens classid. Its words are fields: `AlgebraRef { lens, word }`, labels come from the lens's ClassView, `declare_algebra`, `resolve_algebra`, `words_used`.
- `AlgebraId`, the string catalogue and the per-entry `SigRev` are removed.
- `Extent` per class, with fixed per-axis widths (W64/W256).
- `morton8x8.rs` formatted. Main's Style Check format step had been red since #1862.
- STATUS_BOARD catch-up after #1869/#1870. Plan D-DT64-6 A.5 addenda 7–10.
- **Not in it:** the thin-provisioned extent (`9014fa07b`) and addendum 11. They were pushed after the merge and land in the follow-up PR.
- **Confidence:** 20 tests; 7 disable runs red.

## 2026-10-30 — lance-graph PR #1869 (merged `9d119bb5f`, branch `ccr-45a41fb4-0j3i0l`, head `1761d4ce8`) — lance-graph-dt64: the bind store for meaning and behaviour

- **Added:**
- `crates/lance-graph-dt64`, a workspace member that depends only on `lance-graph-contract`.
- `MethodId` + `SigRev`, K3 `Guard` (`SetExpr` + `Logic`) with `witness`, ordered `Effect`s with operands.
- One `resolve`, D5 immutable classid with derived classid + versioned route log, `admit(MethodRef)`.
- `field_view` / `field_meaning` / `mask_where`, the dataflow check, `footprint`.
- Plan D-DT64-6 A.5 + addenda 1–6.
- **Confidence:** 19 tests; every guard disable-verified red.

## 2026-10-31 — lance-graph PR #1875 (merged `b7adb0c`, branch `claude/mistaber-ruff-harvest-9gtxd4`, head `ed71916`) — D-MIST-NATIVE-1a: HHTL16 Register128 rows replace the name interner

- **Added:**
Expand Down
2 changes: 1 addition & 1 deletion .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
| D-DT64-6-3 | register OGIT verbs as DT64 predicates in 64-wide blocks | Queued | D-DT64-6-2 green |
| D-DT64-6-4 | consumer read-only access via HotPlug activation | Queued | D-DT64-6-3 green |
| D-DT64-6-5 | OGIT becomes cross-check oracle once a domain has attested predicates | Queued | one attested domain |
| D-DT64-6-BS | `crates/lance-graph-dt64`: the bind store (workspace member, contract-only dep). Closes D-DRDT §4 gaps 1–4 (MethodId + SigRev, K3 guard as `SetExpr` + `Logic`, ordered effects, one `resolve`); D5 immutable classid, derived classid + versioned route log; D-DRDT §5 falsifier | **Shipped** #1869 | 19 tests green, clippy/fmt clean; disable runs (Amendment A.5) |
| D-DT64-6-BS | `crates/lance-graph-dt64`: the bind store (workspace member, contract-only dep). Closes D-DRDT §4 gaps 1–4 (MethodId + SigRev, K3 guard as `SetExpr` + `Logic`, ordered effects, one `resolve`); D5 immutable classid, derived classid + versioned route log; D-DRDT §5 falsifier | **Shipped** #1869, #1871; `dr` module + thin-provisioned extent in PR | 27 tests green (21 binding, 6 `dr`), clippy/fmt clean; disable runs (Amendment A.5 addenda 9–12) |

## D-DT64 — DTO Tensor 64: versioned semantic predicate adapter and DR projections (2026-10-26)

Expand Down
14 changes: 14 additions & 0 deletions .claude/board/entries/2026-10-31-d-dt64-6-dr-addressing-module.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# D-DT64-6-DR: DR addressing as `lance_graph_dt64::dr`

**Date 2026-10-31 · Status VERIFIED-IN-CODE · Plan [`d-dt64-6-routing-bindstore-behavior-v1.md`](../../plans/d-dt64-6-routing-bindstore-behavior-v1.md) A.5 addendum 12**

DR's addressing moves from `dr-math-binding-probe` into the bind store as the module `dr`. It holds reservations, the route log, the frame witness, the guards, the typed axis and the global → local map. It names nothing from the binding side ("DR routes, DT interprets"), and a test pins that. DR's computations stay with Quack.

The thin-provisioned extent (`9014fa07b`), which #1871 merged without, is restored in the same PR.

27 tests; 6 disable runs red.

**OPEN:**
- the probe owner switches to `dt64::dr`;
- `bind_dr64` waits on the `MethodSignature` vs `MethodRef` identity (EXO-50);
- the reservation as a global range (start + length).
3 changes: 2 additions & 1 deletion .claude/board/entries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,14 @@ index row, (3) no duplicate entry id. Checks 1 and 2 are deliberately
opposite directions; the stranding this convention prevents shows up in
exactly one of them, never both.

519 entries, 2026-08-06 .. 2026-10-31.
520 entries, 2026-08-06 .. 2026-10-31.

| date | entry id | finding | file |
|---|---|---|---|
| 2026-10-31 | `D-SAG-6-2-LAB` | | [2026-10-31-d-sag-6-2-lab-projection.md](2026-10-31-d-sag-6-2-lab-projection.md) |
| 2026-10-31 | `D-SAG-6-1-CHECKLIST` | | [2026-10-31-d-sag-6-1-checklist.md](2026-10-31-d-sag-6-1-checklist.md) |
| 2026-10-31 | `D-MIST-NATIVE-1b` | | [2026-10-31-d-mist-native-1b-makor-hydrate.md](2026-10-31-d-mist-native-1b-makor-hydrate.md) |
| 2026-10-31 | `D-DT64-6-DR` | | [2026-10-31-d-dt64-6-dr-addressing-module.md](2026-10-31-d-dt64-6-dr-addressing-module.md) |
| 2026-10-30 | `D-XLOG-NATIVE-0` | | [2026-10-30-d-xlog-native-crosswalk.md](2026-10-30-d-xlog-native-crosswalk.md) |
| 2026-10-30 | `D-XLOG-DR64-0` | XLOG's CPU frontend lowers onto DR64 relcomp (answer {2}, 2 oracles); its optimizer emits ChainJoin and swapped orders; arrow 60 vs 58 blocks in-tree use; masks lose to scalar on selective data | [2026-10-30-d-xlog-dr64-0-xlog-rir-over-dr64-relcomp.md](2026-10-30-d-xlog-dr64-0-xlog-rir-over-dr64-relcomp.md) |
| 2026-10-30 | `D-TRACT-SHAPE-1` | | [2026-10-30-d-tract-shape-1-cold-shape-folding.md](2026-10-30-d-tract-shape-1-cold-shape-folding.md) |
Expand Down
54 changes: 54 additions & 0 deletions .claude/plans/d-dt64-6-routing-bindstore-behavior-v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,3 +337,57 @@ Disable runs on the extent commit:
| W256 read as 64 | 2 |

Still capped at 64: `tract-harvest-probe`'s `dr3::TILE = 64`, a single DR64 tile built from `relcomp::Rows = [u64; 64]`. That is the tract session's lab crate. Its full model (4,146 of 7,620 nodes WHEN-true) already reports ">64 positions untiled". Lifting it is that session's change; the binding side no longer forces 64.

**A.5 addendum 11 (2026-10-30, operator: "reserve but don't claim, thin provisioning; Jina as a result is not able to use its 7000 nodes").** Addendum 10 gave each axis one width, W64 or W256, so the most any class could address was 256 identities, and Jina's 7,620 nodes could not be bound. Each axis is now a reservation, `Axis { tile: W64 | W256, tiles }`:
- `Extent::DR256_GLOBAL_X64` reserves the whole DR256 identity space: 65,536 positions in 256 tiles of 256.
- Reserving claims nothing. `BindStore::claimed(class, version)` counts the identity tiles that hold a position routed to the class at that version.
- `tile_bytes` states the cost of one claimed tile: 256 × 256 × 64 / 8 = 512 KiB. Routing Jina's 7,620 nodes claims 30 tiles (15 MiB stated, nothing allocated), out of 256 reserved.
- `route` refuses a position past the class's identity reservation (`OutsideReservation`) and moves no version.
- An axis wider than it can address is refused (`ReservationTooWide`), never truncated.

Disable runs, each failing exactly one test:

| guard removed | failing tests |
|---|---|
| the reservation check in `route` | 1 |
| claiming by tile (counting positions instead) | 1 |
| the too-wide check | 1 |
| costing the reservation instead of the claim | 1 |

Still capped, and stated: one class's property axis is at most 256 fields, because a `WideFieldMask` position is a `u8` (contract). Wider would mean tiled field addressing in the contract, which this crate does not own. In the bind store, Jina's nodes are identity positions, and an ONNX lens's fields are its op signatures, so this does not block Jina here. The tract lab's own DR#3 layout puts Jina's 7,620 values on its property axis, and `dr3::TILE = 64` is that session's to lift.

**A.5 addendum 12 (2026-10-31, operator: "wouldn't it make sense to move DR into DT64 — at least from the lab probe crate").** DR's addressing is now the module `lance_graph_dt64::dr`, lifted from `dr-math-binding-probe`. Your diagram's "DR routes, DT interprets" becomes a module boundary inside the bind store, not a separate crate. D4 already makes DT64 the bind store for all holographic addresses, and §3 puts the route versioning there.

`dr` holds:
- reservations: `Width`, `Axis`, `Extent`, `Claim`, `MAX_RESERVED`;
- the route log: `RouteLog` with `route`, `retract`, `routed_at`, `claimed`;
- the frame witness: `FrameStore`, `Frame`, `FrameRevisions`, `FrameRefusal`;
- the guards: `Focus`, `Scope`, `Guards::check`;
- the typed axis: `AxisKind`, `ClassAxis`;
- the global → local pointer table: `LocalMap`, `address`, `coordinates`, `rotate_yz`.

It names nothing from the binding side, and a test pins that. `BindStore` keeps its API and delegates to `RouteLog`.

Two changes against the probe:
- The probe's `Axis { class, kind }` is `ClassAxis` here, because `Axis` is the reservation axis.
- `LocalMap` and `address` take a tile `Width` instead of a fixed 64, so a DR256 tile is addressed the same way.

Not lifted:
- `relcomp`, `where_dr3`, `population`, `recipe` and the folds in `hhtl16` are computations, proofs and oracles, so they belong to Quack. `relcomp` also carries egglog and sha2, which a contract-only crate must not.
- `dr4::route` produces values, so it is execution.
- `bind_dr64` / `BoundDr64` wait on the `MethodSignature` vs `MethodRef` identity question (EXO-50).

The probe itself is unchanged; its owner switches to `dt64::dr`.

Also restored here: #1871 merged before its last two commits were pushed. `9014fa07b` (thin-provisioned extent) and addendum 11 were on the branch only and are cherry-picked into this PR.

Disable runs on the `dr` commit, each turning a test red:

| guard removed | failing tests |
|---|---|
| the foreign-store check | 2 |
| the source-revision refusal | 1 |
| the focus guard | 1 |
| `LocalMap` width read as 64 | 1 |
| address width read as 64 | 1 |
| a `use crate::` in `dr.rs` (the boundary test) | 1 |
Loading
Loading