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
2 changes: 1 addition & 1 deletion .claude/board/INTEGRATION_PLANS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## 2026-10-30 — D-LITHO: the photolithography contract → `.claude/plans/d-litho-photolithography-contract-v1.md`

**Status:** PROPOSED, docs only; nothing authorized. **Board:** [entry](entries/2026-10-30-d-litho-photolithography-contract.md), [STATUS_BOARD](STATUS_BOARD.md) D-LITHO. Photolithography as the shader north star: vocabulary (wafer, reticle, exposure, dose, develop), the Abacus as address grammar and mental model (frame, rod, bead position under a DR law), "views are laws, never rotations", ownership, consumers, gates G1–G5 (not run). Clarifies D-DRDT's "rotation" wording without editing it.
**Status:** RETIRED 2026-10-30, folded into D-DT64-6 Amendment A (`d-dt64-6-routing-bindstore-behavior-v1.md`); "photolithography" was a metaphor. **Board:** [entry](entries/2026-10-30-d-litho-photolithography-contract.md), [STATUS_BOARD](STATUS_BOARD.md) D-LITHO. Photolithography as the shader north star: vocabulary (wafer, reticle, exposure, dose, develop), the Abacus as address grammar and mental model (frame, rod, bead position under a DR law), "views are laws, never rotations", ownership, consumers, gates G1–G5 (not run). Clarifies D-DRDT's "rotation" wording without editing it.
**Confidence:** decisions recorded; no code.

## 2026-10-30 — D-TRACT-HARVEST-0: Tract as a cold ONNX frontend, admitted onto native methods → `.claude/plans/d-tract-harvest-0-native-algebra-bridge-v1.md`
Expand Down
6 changes: 3 additions & 3 deletions .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

| D-id | Deliverable | Status | Gate |
|---|---|---|---|
| D-LITHO-0 | contract: vocabulary, Abacus address grammar, design rules, ownership, consumers (docs) | In PR (#1859) | docs review |
| D-LITHO-1 | first consumer operation written in the grammar, with a failing fixture | Queued | G1; needs a consumer signature (EXO-50) |
| D-LITHO-2 | law-not-rotation, Morton-tile, dose-identity and alignment-refusal falsifiers | Queued | G2–G5; after D-LITHO-1 |
| D-LITHO-0 | contract: vocabulary, Abacus address grammar, design rules, ownership, consumers (docs); §4 = DR facts the DTO layer must know (cited) | Folded into D-DT64-6 Amendment A (#1862) | docs review |
| D-LITHO-1 | first consumer operation as a DTO binding, with a failing fixture | Folded into D-DT64-6 Amendment A (#1862) | G1 for a non-ONNX consumer: NodeGuid stand-in, R/S as ClassView × WideFieldMask, count method by reference with `Population::Bag`, expected {2:4, 3:1, 7:1}; refused today with `BagNeedsMultiplicity` |
| D-LITHO-2 | law-not-rotation, Morton-tile, dose-identity and alignment-refusal falsifiers | Folded into D-DT64-6 Amendment A (#1862) | G2 not run |

## D-XLOG-DR64 — XLOG frontend lowered onto the DR64 relation register, CPU only (2026-10-30)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,35 @@
- the order DR routes → DT64 assigns;
- gates G1, G4, G5.
- Lesson: D-DRF-1 was not read before geometry was written into this plan.

## Correction to the scope correction (2026-10-30, user)

"Of course you need to know the dimensions in order to apply the law effectively."

- The removal above overcorrected. The error was stating DR's dimensions as this contract's decisions, not stating them.
- Plan §4 is now "What the DTO layer must know": DR's facts, each cited (D-DRF-1 §1–§3, `morton8x8.rs`, D-DRAV-1, `dr256-where-capstone-v1.md`, `mask-risc` `ir.rs:329-337` and `tests/rotation.rs`), with what the DTO layer does with each. The key one: D-DRF-1 says axis semantics are declared by the caller, and the DTO layer is that caller.
- The 8 × 8 / 16 × 16 Morton tile reading is derived from the prefix property and pinned only for 4 × 4; it is gated as G3 before use.
- Gates G2 (law, not rotation) and G3 (Morton tile) are restored. Q1 stays withdrawn: deciding rod width is still DR's.
- Strikes the "Removed as DR's concern" list above; it stays in place as history.

MIRROR
- LESSON: geometry was first written without reading DR's plans, then removed instead of attributed; both times the sources were not read in full.

## Correction (2026-10-30, user): metaphor, and the bind store

- Photolithography was the user's teaching metaphor, not a production name. The plan is now a reading aid that maps the metaphor onto existing seams (banner at the top of the plan).
- "XLOG is the first consumer of the bind store" is withdrawn. D-NFR-0 S5 says the binding store is MISSING. D-DT64-Q0 says the binding is an interface seam, not a store. D-NFR-1 (the S5 × S6 adapter) is the smallest seam and is not built.
- XLOG's `BagNeedsMultiplicity` is S8's existing refusal in `bind_dr64`. D-QSP already says a tile carries no bag multiplicity without a further lawful carrier. The dose test (G4) stays as a measured fact, not a proposed carrier.

MIRROR
- BLIND SPOT: the binding plans (Q0, D-NFR-0, D-QSP, D-QR-CAP) were not read before the binding was described.

## Correction to the correction (2026-10-30, user): the bind store plans are authoritative

- DT is the bind store (D-DT64-6 §1 D4; D-DRDT §1): the existing ClassId-addressed DTO binding store. It holds bindings and their version log, never business data.
- D-NFR-0 S5's "MISSING" is about Quack, which is the query-binding membrane, not about DT.
- XLOG (#1864) is a consumer of the DT bind store. "There is no bind store yet" is withdrawn.

## Folded (2026-10-30, user)

- The plan is folded into the bind store plan as D-DT64-6 Amendment A. The D-LITHO file is now only a pointer.
51 changes: 51 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 @@ -187,3 +187,54 @@ All OPEN.
- OGAR [#363](https://github.com/AdaWorldAPI/OGAR/pull/363) (`ogit_schema_composition.rs`).
- crai-rs #1 and #2, CR-H0 / CR-H1 (private repo; a sidecar consumer of #1760; links resolve only with access).
- Board coordination: Linear EXO-50 (append-only; coordination, not approval).

---

# Amendment A (2026-10-30): what the bind store applies from DR, the ONNX reference path, and measured gates

**Status:** PROPOSED / DOCS + two lab tests. Folded in from the retired D-LITHO note (#1859, #1860, #1862), whose "photolithography" wording was the operator's metaphor, not a production name. Nothing here changes §1–§7; it records what a DT binding must know and where the bind store already runs.

## A.1 DR facts a DT binding must know and apply

DR owns every fact below. DT decides none of them, but a binding cannot be stated without them. Every source was read in full on 2026-10-30.

| DR fact | Source | What a DT binding does with it |
|---|---|---|
| DR64 focus: 64 × 64 = 4,096 positions; Boolean tile 512 B; u16 position → SoA-row map 8 KiB; at most 2 MiB of distinct 512 B rows. DR256: 65,536 positions, 8 KiB, 128 KiB, 32 MiB. | D-DRF-1 §1; falsifier G1 (PASS, lab) | Names DR64 or DR256 and states its cost in these units. |
| Dense 64³ volume 32 KiB, 256³ 2 MiB; map plus cube 40 KiB. | D-DRF-1 §1 | Never assumes a cube exists (§7). |
| Axis semantics are declared by the caller; the physical third axis is NFR-OP-2 (DR). | D-DRF-1 §1; capstone DT64-OP-2 | **The DT binding is that caller**: it declares typed axes (`AxisKind`) and never decides the physical third axis. |
| HHTL16 address = `Morton8x8`; an aligned run of 4^j codes is an aligned 2^j × 2^j square (a 64-row word is 8 × 8, a 256-row block 16 × 16). | `morton8x8.rs`; D-DRDT §2; test in A.3 | A view is an address map over the canonical words; rotation is never a mask op (`mask-risc/tests/rotation.rs`). |
| Fixed width 64 / 256; underflow carried by the presence bit; absent is never FALSE or zero. | user ruling 2026-10-30 (EXO-50 17–18); D-DRF-1 G7; D-DRAV-1 AV11 | Out-of-focus contributors are expanded through a witnessed binding or refused. |
| The sealed map is immutable and versioned; the same ordinal under another frame is refused. | D-DRF-1 §0, §2; G3; D-SAG-6 F07 | Consistent with D8: the register copy is keyed to its frame. |
| A Boolean cell is support under a declared semiring; no Bag, NULL or evidence. `FieldMask` is presence, never predicate truth. | D-DRF-1 §1; D-QSP; capstone | A binding declares its population; Bag is refused today (`bind_dr64`: `BagNeedsMultiplicity`). |
| `Keep` → `Plane` reusable under one frame; `ScatterOrU32` is demand-only; a detached `Keep` is recomputed or refused (1,032 vs 31). | `mask-risc ir.rs:329-337`; `dr256-where-capstone-v1.md` B.6, E.5 | No escaped reuse without a complete dependency witness. |
| Map and value lifetimes are separate; a map-only operation needs no value fetch. | D-DRAV-1 §2, §6 | A method binding declares value-free or value-demanding. |
| The 64-thought plane is separate from the relation selector and the map index. | D-DRF-1 §1; R2 | Thoughts are reserved, not claimed (allocate on Thought-Git `Commit`), never a cube axis. |

## A.2 The bind-store shape runs in a lab for ONNX: `tract-harvest-probe`

**Status:** the bind store is a plan-level decision (D4, D-DRDT §1); no bind store type exists in the codebase. What exists: the contract pieces DT is built from (`ClassView::fields`, `methods_for`, `actions_for`, `hotplug`) and this lab crate. `crates/tract-harvest-probe` runs the shape of D1–D8 for ONNX op signatures, checked bit for bit against ORT (`tests/tiny.rs`, `tests/jina.rs`). Read in full 2026-10-30.

| This plan | `tract-harvest-probe` | Test |
|---|---|---|
| DR#3 Identity × Property | `dr3::OnnxGraph`: nodes = Identity, values = Property, `TILE = 64`, else `TileOverflow` | `dep_composition_is_the_source_dataflow` |
| ON / DO share the property domain (§3) | `on`, `do_` relations; `dep = do_ ∘ read_by` via `relcomp::compose`; schedule from `dep` | `schedule_comes_from_dep_not_source_order` |
| D4 classid → polyfill; D5 immutable classid | `registry::Registry`: op signature → one classid (lab ordinals `0x0F..`), DO in `lance-graph-onnx` | `base_through_the_graph_is_bit_exact_against_ort` |
| WHEN is K3; UNKNOWN never TRUE (§3 step 4) | `Registration::when` returns `K3`; resolution refuses non-TRUE | `unknown_shapes_refuse`, `incompatible_broadcast_is_when_false` |
| Unregistered is UNKNOWN (F06) | `Refusal::Unregistered` | `unregistered_op_is_refused` |
| D8 frame-keyed binding | `Frame` revisions = (source digest, registry version, coordinate digest); `FrameStore::check` per run | `stale_generation_is_refused`, `registry_change_is_a_frame_change` |
| Numeric annotation | `Numeric::{Exact, Bounded}`; ULP measured vs ORT and f64 | `erf_sweep_against_f64_and_ort`, `trig_sweep_against_f64_and_ort` |

Production step (registry module doc): the lab ordinals become OGAR-minted concepts activated through `hotplug` (D6).

## A.3 Measured gates (lab)

| Gate | Test | Result |
|---|---|---|
| Morton tile | `lance-graph-contract` `morton8x8::tests::every_aligned_code_run_is_an_aligned_square` (j = 0..=8) | PASS; disable run (runs start one code late) red |
| Count as Boolean planes | `lance-graph-mask-risc/tests/dose.rs`: K = 6 planes over a 4,096-row focus, `And` + `Count` per plane, weighted 2^k, equals the per-position sum at 0/3/50/97/100 % selection; every plane load-bearing | PASS; disable run (swap adjacent weights) red. A measured fact, not an adopted Bag carrier |
| First non-ONNX consumer (stated in a test; no store built) | XLOG #1864: `NodeGuid` stand-in, R/S as `ClassView` × `WideFieldMask`, count method by reference, `Population::Bag`, expected {2:4, 3:1, 7:1} | failing fixture by design: refused with `BagNeedsMultiplicity` |

## A.4 Open (unchanged owners)

The Bag carrier (who admits a counted population into `bind_dr64`); the D-DRDT §4 DT gaps (MethodId, K3 guards, effect order, one lookup); §6 questions 1–9.
Loading
Loading