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
6 changes: 6 additions & 0 deletions .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 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.
- Plans D-SOC-FENCE and D-DYNBAG are on main, plan only.
- No contract type changed.

## 2026-10-31 — main after #1880 (merged `4d677ba`)

- Mistaber makor citations are addressed through `deepnsm-v2` `hydrate` (`NiblePath`, no classid). `deepnsm-v2` is the grammar and language intake arm.
Expand Down
11 changes: 11 additions & 0 deletions .claude/board/PR_ARC_INVENTORY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
## 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:**
- `xlog-relcomp-probe/src/native.rs`: the admitted two-atom chain's support and bag count on `ndarray::simd` (`eq_u32_to_mask`, `mask_scatter_or_u32`, `mask_and`, `masked_group_count_u32` ×2, `checked_binary_i64(Mul)`), Y axis on `dt64::dr::LocalMap` (up to 256); `admit_count` for XLOG's `count` rule.
- `tests/dto_binding.rs` rewritten onto `BindStore`, `dt64::dr::FrameStore` and `MethodRef`; `tests/epi5_reading.rs` (an XLOG base fact reads `Direct × Open`, a composed edge `IndirectKnown × Open`).
- `facts()` drops repeated base tuples (XLOG's loader treats a base relation as a set; Codex P2).
- Plans: `d-xlog-native-v1.md` Amendments A and B, `d-soc-fence-v1.md` (one place per concern, CI fence), `d-dynbag-holographic-bags-v1.md` (DR{dynamic bag}, semiring readings, PostgreSQL endgame).
- **Locked:** none in production; lab probe only.
- **Known defect, carried to main:** `native.rs` calls `ndarray::simd` fold words directly, bypassing Quack and mask-risc. It is the first named D-SOC-FENCE violation, to be fixed by D-DYNBAG-0.
- **Confidence:** probe suites green locally (gate_b 18, litho 12 + 1 ignored, dto_binding 4, epi5_reading 4, gate_g 3); 8 disable runs red. The probe has no CI line. Workspace CI green on the head.

## 2026-10-31 — lance-graph PR #1880 (merged `4d677ba`, branch `claude/mistaber-ruff-harvest-9gtxd4`, head `7b8d4b6`) — D-MIST-NATIVE-1b: makor citations addressed via deepnsm-v2 hydrate, no classid

- **Added:** `mistaber-kripke-probe/fixtures/makor.tsv`, 141 real `makor` citations from the compiled Mistaber ontology. `src/makor.rs` lays them over a Yoreh De'ah outline (siman = chapter, seif = verse) with `deepnsm-v2` `hydrate`: each citation is a `Spo` at its seif's `NiblePath`, with no classid, `promote`, key or `NodeRow`. `tests/makor.rs` adds 8 tests. CI paths now include `deepnsm-v2` and its dependencies. Plan §10; entry `2026-10-31-d-mist-native-1b-makor-hydrate.md`.
Expand Down
4 changes: 2 additions & 2 deletions .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ Plan: `.claude/plans/d-soc-fence-v1.md`. Plan only; nothing runs yet.
| 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` (ndarray only, no `xlog-*` dep, no plan type) once plan §4 holds | Queued | N1–N5 |
| 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) | In PR | lab probe |
| 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) | In PR | lab execution only |
| 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 |

## D-LITHO — the photolithography contract (2026-10-30)

Expand Down
85 changes: 85 additions & 0 deletions .claude/board/entries/2026-10-31-coresearch-mandatory-codegraph.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Co-research: mandatory codegraph, lazy reasoning behind DT64

**Date 2026-10-31 · Status OPEN (exploration map; nothing adopted by the council) · Plan refs: D-DYNBAG §18-§20**

**Question.** Can "every admitted executable method has a mandatory, versioned, addressable codegraph (proposed: R2IL); execution runs a bound native plan without hot-path graph traversal; reasoning is pushed down lazily through DT64" be made true without duplication? What is the minimal ownership and binding seam?

**Premise gate (premise-auditor): PREMISE-SPLIT.** The clause "R2IL owns the method representation" is PREMISE-WRONG as filed. R2IL (`ogar-r2il`) is one domain vocabulary: an arity table with no method identity and no revisions (`lib.rs:3-60`). "Codegraph" names two artifacts:
- (a) the static, versioned body (frame);
- (b) the index of executed ops (motion, per run).

The scouts answered four re-asked questions: Q1 who owns the body, Q2 is the binding a projection of it, Q3 what a receipt carries, Q4 where the cold analysis runs.

## Inside facts (VERIFIED-IN-CODE)

- OGAR `ActionDef` holds the body as `body_source: Option<String>`, with no revision and no hash (`ogar-vocab/src/lib.rs:396-457`).
- `ogar-loco::Program` is an executable body form that "does not mint keys" (`program.rs:38-49`). Executable `PROC_DEF` is OPEN.
- DT64 `MethodBinding` is hand-authored. Nothing derives it from an OGAR body (closed search over `lance-graph/crates` and `OGAR/crates`). `MethodRef` cannot name a body.
- Opaque ops are refused everywhere: R2IL `CallOther` has arity `None`; Tract returns `Refusal::Unregistered`. No opaque-node type exists.
- Per-op provenance exists only in r2ssa (`OpArena` `OpOrigin`/`Pass`).
- Content-derived revisions exist only in tract-harvest-probe (`FrameRevisions.source`), a lab crate.

## Outside evidence (read by section)

- **Soufflé provenance** (arXiv 1907.05045): each result carries a rule id and a proof height; proof trees are built on demand; overhead 1.27× time and 1.45× memory.
- **MLIR** (arXiv 2002.11054): one IR with many dialects; unknown ops are handled conservatively; effects are declared through traits and interfaces; each op carries a Location as provenance.
- **Incremental CodeQL** (arXiv 2308.09660): results are populated on demand, and incremental reuse works only with stable IDs across commits.
- **PROV-O**: `used`, `wasGeneratedBy`, `hadPlan`.
- **PostgreSQL plan cache**: a plan is re-planned when a recorded dependency changes.
- **ONNX Runtime**: a saved optimized model is valid only for its target, so a receipt must name the target.

## Exploration map

| # | idea | bridge | firewall | verdict | probe |
|---|---|---|---|---|---|
| 1 | Canonical method body lives in the OGAR IR (`ActionDef` → `ogar-loco::Program`), written in several vocabularies; R2IL is one of them | OPPORTUNITY | PASS | **ADOPT-NOW as the ownership rule** (doctrine already in OGAR-AS-IR; no code) | P1 |
| 2 | "R2IL owns the method representation" | DROP | TRAP | **SKIP** (contradicts the ruling that R2IL is executed and never pre-converted; R2IL has no identity) | — |
| 3 | Body revision = digest of canonical body bytes, identity only, never a correctness gate; held on the OGAR Core node | OPPORTUNITY | PASS (conditional) | **PROBE** | P2 |
| 4 | DT64 binding footprint derived from the body by a cold lowering outside DT64; DT64 validates (undeclared write refuses, inferred read warns) | WORTH-EXPLORING | CONFLICT (seam: OGAR codegen / lance-graph-ogar adapter) | **PROBE** | P3 |
| 5 | `MethodRef` + `body_rev`, frozen under D5; settle EXO-50 together | OPPORTUNITY | PASS | **PROBE** after P2/P3 (DT64 type change: owner decision) | P4 |
| 6 | Opaque native ops as declared extern words with arity + footprint in the OGAR body IR (never in the R2IL table) | WORTH-EXPLORING | CONFLICT (seam: OGAR body IR only, executed by the native adapter) | **PARK** pending an OGAR ruling | P5 |
| 7 | Receipt per run: `MethodRef`, `body_rev`, `plan_rev`, target, frame/route, output | OPPORTUNITY | PASS (per run, never per row) | **PROBE** | P7 |
| 8 | Re-plan or refuse when a recorded revision changes | WORTH-EXPLORING | PASS | **PARK** (frame/route rechecks exist; body revision depends on 3 and 5) | — |
| 9 | Lazy provenance | WORTH-EXPLORING | CONFLICT if per-row | **ADOPT-NOW as a rule:** the hot path emits only the per-run receipt; proofs are rebuilt cold by replay | — |
| 10 | Cold relational code projections (Defines/Uses/Calls/…) keyed by (MethodRef, body_rev), computed on demand, never stored as authority | WORTH-EXPLORING | CONFLICT if persisted | **PARK** until a body exists | P8 |
| 11 | Persist the e-graph in the IR | DROP | TRAP | **SKIP** | — |
| 12 | "Mandatory codegraph" | OPPORTUNITY as a mandatory body reference at admission | SPLIT | **PROBE** as "mandatory body reference"; **SKIP** as "mandatory R2IL graph" | P9 |
| 13 | #1892: DT64 effects → R2IL lowering | DROP | TRAP | **SKIP**: #1892 is superseded, do not merge. Reusable parts: the `Receipt` shape (re-key to body/plan revision), the `FoldDialect` run path | — |
| 14 | One def-use container for Tract / r2ssa / OnnxGraph | WORTH-EXPLORING | CONFLICT (no new shared type) | **PARK**; if pursued, a ClassView reading over the existing body container | P10 |

## Minimal seam (proposal, for the operator)

- **Body.** OGAR owns it. The Core node's `ActionDef` references one `ogar-loco::Program`, written in core words plus vocabulary words (R2IL, relalg, onnx, declared externs). `body_rev` is a digest of the canonical body bytes: an identity, never a gate. `body_source` stays as provenance text.
- **DT64.** Carries a reference, `MethodRef` + `body_rev`. Under D5 a new body means a derived classid plus a re-route. DT64 still executes nothing and gains no dependency on the interpreter.
- **Binding.** ON/WHEN stay authored in DT64. The effects/reads footprint is checked against a footprint derived by a cold lowering outside DT64 (OGAR codegen or the lance-graph-ogar adapter). Full derivation comes later, after P3 measures it.
- **Execution.** Prepare lowers the body once into a native plan with `plan_rev`; the plan is a cache, re-derivable from (`body_rev`, target). Run executes only the plan. Tract's `Plan` is the precedent.
- **Receipt.** One per run: `MethodRef`, `body_rev`, `plan_rev`, target, frame/route, output. Replay refuses on any mismatch, as D-TGB-4 does.
- **Reasoning.** XLOG / Egglog / DialEgg / Datalog run as cold passes keyed by (`MethodRef`, `body_rev`) and read the OGAR body. DT64 hands out the key, never the evaluation. Nothing is persisted as a second store.
- **Opaque ops.** Declared extern words with an arity and a footprint in the body IR. An undeclared op is still refused.

## Probes (pre-registered; lab only; P2 and P3 first, they gate P4, P7 and P9)

- **P1** Join an `ActionDef` and its `Program` under (classid, method, `body_rev`) without copying fields. Kill if the Program needs a field that lives only outside OGAR, or if the join needs a new store.
- **P2** Is `body_rev` stable across a no-op re-harvest, and does it change on a one-token semantic edit? Kill on either noise or insensitivity.
- **P3** Derive the binding footprint from `ActionDef` (reads/writes/calls/KausalSpec) and compare it with the hand-authored xlog-relcomp-probe bindings. Kill if any field needs invented information, or if registration refuses it with `UndeclaredRead`.
- **P4** Lab copy of DT64 with `body_rev` on `MethodRef`. Kill if registration needs the copied effects.
- **P5** A deliberately unregistered Jina op as an opaque node. Kill if the analysis silently treats it as pure.
- **P6** No hot-path traversal: lookups per run after bind must be zero, or at least independent of graph size (tiny vs Jina; sag fixture at N vs 16N). Report in ns/µs.
- **P7** Does the receipt tell runs apart when the body or the target changes? Today's `plan_id` would collide when the body changes but the binding does not.
- **P8** r2ssa rows keyed by (MethodRef, `body_rev`, OpOrigin). Kill if OpOrigin is unstable across identical harvests.
- **P9** Census: admitted methods with no OGAR body to point to. If there are more than 0, "mandatory" is a new authoring obligation.
- **P10** One def-use container across Tract / r2ssa / OnnxGraph. Kill if it needs `Any` or a blob.

## Not searched

- Translation validation / proof-carrying code (no primary source read).
- egglog and DialEgg papers beyond secondhand summaries.
- semiring provenance (not read).
- ProvONE (fetch failed).
- r2sleigh `r2engine` scheduling cost.
- OGAR `KausalSpec` variant bodies in depth.
- consumer repos (medcare-rs, odoo-rs), to count `ActionDef`s with a `body_source`.

## Closeout

PR #1890 | STATUS: open | OUTCOME: exploration map; #1892 marked superseded | OPEN: operator choice of probes; OGAR ruling on opaque extern words; executable `PROC_DEF`; EXO-50
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# D-DYNBAG-X: cross-frontend projection crosswalk

**Date 2026-10-31 · D-id D-DYNBAG-0 (scope) · Status OPEN (map, no code)**

Read-only harvest of XLOG, ONNX/Tract, SQL/R2IL, egglog-MLIR, Codegraph (rust-analyzer + Charon) and Scallop against DT64, ClassView, Quack, relalg, R2IL and mask-risc. The full table and the gaps are in `.claude/plans/d-dynbag-holographic-bags-v1.md` §18.

- **MEASURED (read):** no component executes a DT64 `MethodBinding`; `BindStore::admit`/`resolve` have no production caller (`lance-graph-dt64/src/lib.rs:796`; only dt64 tests and `xlog-relcomp-probe/tests/dto_binding.rs`).
- **MEASURED (read):** the Tract probe is the one place where the resolved binding is the one dispatched (`tract-harvest-probe/src/plan.rs:116-128,171,204`), but through its own `Registry`, not `BindStore`.
- **MEASURED (read):** `admit` checks method id, `SigRev` and guard witness only (`lib.rs:796-822`); it cannot refuse on an effect or on POSSIBLE/UNKNOWN evidence.
- **MEASURED (read):** "project" means columns (XLOG RIR), rows kept as a mask (relalg `Keep`, Quack `Rows`) and field labels (`ClassView::project`, 64-bit `FieldMask` only; `Resolved::field_view`, `WideFieldMask`). Three owners' words, not one operation.
- **OPEN:** the executor seam that turns an admitted binding into the Quack/R2IL description that runs (§18.4 X1); without it no two consumers share a binding contract.
- **Address idea `[DD:CC][F###]`:** the concept half is domain:concept, not domain:app (`ogar_codebook.rs:179`); the low half is the app lens (`0x0000`–`0x000C`, V3 marker `0x1000`). A per-method slot in the classid would be a second spelling of `MethodRef { class, MethodId }`, which DT64 rules out ("a codebook item never gets a classid", `lib.rs:51-65`). PROPOSED only; OGAR decision.

**Fruit:** X2 (effect/evidence refusal in `admit`) is small, owned by DT64, and unblocks the codegraph fixture.
4 changes: 3 additions & 1 deletion .claude/board/entries/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ 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.

523 entries, 2026-08-06 .. 2026-10-31.
525 entries, 2026-08-06 .. 2026-10-31.

| date | entry id | finding | file |
|---|---|---|---|
Expand All @@ -36,6 +36,8 @@ exactly one of them, never both.
| 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-31 | `D-DYNBAG-X` | | [2026-10-31-cross-frontend-projection-crosswalk.md](2026-10-31-cross-frontend-projection-crosswalk.md) |
| 2026-10-31 | `coresearch-mandatory-codegraph` | | [2026-10-31-coresearch-mandatory-codegraph.md](2026-10-31-coresearch-mandatory-codegraph.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
Loading
Loading