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
10 changes: 10 additions & 0 deletions .claude/board/INTEGRATION_PLANS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
## 2026-10-31 — D-DYNBAG: DR{dynamic bag}, holographic bags as polyfill, the PostgreSQL endgame → `.claude/plans/d-dynbag-holographic-bags-v1.md`

**Status:** PROPOSED, plan only. **Board:** [STATUS_BOARD](STATUS_BOARD.md) D-DYNBAG. DuckDB's selection vector made explicit: a Quack selection becomes a mask plus one pointer table (`dt64::dr::LocalMap`) and runs on a local tile whose width follows the survivor count (DR64 / DR256 / multi-tile). Relations on a tile are read in a semiring per operation (B for presence, ℕ for bag multiplicity; K-relations), one address with several readings. The bag-op polyfill names each relational operation once with one realization per semiring. ℕ-compose via `ndarray::simd::matmul_i8_to_i32` is the candidate home for the many-to-many join (falsifier D-DYNBAG-1). Endgame: a PostgreSQL-compatible surface (`sql-quack-probe`, modelled on `lance-graph-cypher-quack`) scored against DuckDB and PostgreSQL in ns, losses reported. The membrane stays a reference note on EXO-50.
**Confidence:** plan; word existence verified in code, no new measurement.

## 2026-10-31 — D-SOC-FENCE: one place per concern, checked in CI → `.claude/plans/d-soc-fence-v1.md`

**Status:** PROPOSED, plan only. **Board:** [STATUS_BOARD](STATUS_BOARD.md) D-SOC-FENCE. A mapping file (`.claude/soc/one-place.toml`) names each concern's sole owner, its basis, the symbols only the owner names and what others reach it through. A `syn`-based symbol fence plus a `cargo metadata` dependency fence report every use outside it. A two-way ratchet baseline holds known violations. Report-only first; blocking once the baseline is committed. Triggered by PR #1884's direct `ndarray::simd` fold calls bypassing Quack and mask-risc.
**Confidence:** plan; blast radius counted by `git grep` as candidates, not read.

## 2026-10-30 — D-XLOG-NATIVE: XLOG plan vocabulary over the ndarray::simd polyfill → `.claude/plans/d-xlog-native-v1.md`

**Status:** PROPOSED, docs only. **Board:** [entry](entries/2026-10-30-d-xlog-native-crosswalk.md), [STATUS_BOARD](STATUS_BOARD.md) D-XLOG-NATIVE. Crosswalk of XLOG's compiled-plan nodes onto the `ndarray::simd` polyfill that `lance-graph-onnx` aliases, in the D-ONNX-NATIVE categories (ALIAS / INLINE / NATIVE / REFUSE), name-checked, not tested; shared operations are the same native symbols as ONNX's. Decides that a `lance-graph-xlog` crate (ndarray only, like `lance-graph-onnx`; no `xlog-*` dependency, no plan type) waits until selection rows are tested and the many-to-many join has a native home.
Expand Down
31 changes: 30 additions & 1 deletion .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,46 @@
| D-MIST-NATIVE-3 | axes past 64 (worlds, propositions, rules) | Queued | refused today |
| D-MIST-NATIVE-4 | intake from compiled HLL | Queued | upstream provenance defects (`mistaber-rs#3`, `#4`) |

## D-DYNBAG — DR{dynamic bag}: selection vector made explicit, holographic bags as polyfill, PostgreSQL endgame (2026-10-31)

Plan: `.claude/plans/d-dynbag-holographic-bags-v1.md`. Plan only.

| D-id | Deliverable | Status | Gate |
|---|---|---|---|
| D-DYNBAG-0 | PR #1884 layering fix: XLOG intake as lanes, support + bag count via Quack → mask-risc, fold oracles, cost columns | Queued | operator go-ahead |
| D-DYNBAG-1 | ℕ-compose probe: `matmul_i8_to_i32` over two DR64² tiles for `p(X, Z)`; B projection = `relcomp::compose` | Queued | D-DYNBAG-0 |
| D-DYNBAG-2 | semiring parameter K (B, ℕ) in relalg `Rel` + Quack surface; typed refusal per (op, K) | Queued | D-DYNBAG-1 |
| D-DYNBAG-3 | missing ℕ words backend-first (i64 masked select, min, truncated minus, compare-to-mask, masked sum; maybe bit-packed product) | Queued | D-DYNBAG-2 |
| D-DYNBAG-4 | DR{dynamic}: width from survivor count, multi-tile map, cross-tile fold/compose | Queued | DT64 `dr` owner |
| D-DYNBAG-5 | `sql-quack-probe` modelled on `lance-graph-cypher-quack` | Queued | parser decision |
| D-DYNBAG-6 | scoreboard vs DuckDB / PostgreSQL, ns units, losses reported | Queued | D-DYNBAG-5 |
| D-DYNBAG-7 | second Datalog frontend (Scallop) through the same path | Queued | D-DYNBAG-2 |

## D-SOC-FENCE — one place per concern, checked in CI (2026-10-31)

Plan: `.claude/plans/d-soc-fence-v1.md`. Plan only; nothing runs yet.

| D-id | Deliverable | Status | Gate |
|---|---|---|---|
| D-SOC-FENCE-0 | census of §1 candidates, read and classified; mapping file + baseline drafts | Queued | §5 decisions |
| D-SOC-FENCE-1 | `syn`-based symbol fence + dependency fence, fixture falsifiers, report-only workflow | Queued | D-SOC-FENCE-0 |
| D-SOC-FENCE-2 | mapping file + baseline committed; CI blocks new violations and stale entries | Queued | D-SOC-FENCE-1 |
| D-SOC-FENCE-3 | per-crate burn-down through each concern's `reach_via` | Queued | D-SOC-FENCE-2, owning sessions |
| D-SOC-FENCE-4 | `/v3-audit` item 1 and the lgj G11 allowlist read from the mapping file | Queued | D-SOC-FENCE-2 |

## D-XLOG-NATIVE — XLOG plan vocabulary over the ndarray::simd polyfill, the algebra under lance-graph-onnx (2026-10-30)

**Status:** PROPOSED / DOCS ONLY. [Plan](../plans/d-xlog-native-v1.md); [board entry](entries/2026-10-30-d-xlog-native-crosswalk.md). No crate yet.

| D-id | Deliverable | Status | Gate |
|---|---|---|---|
| D-XLOG-NATIVE-0 | crosswalk of XLOG plan nodes onto `ndarray::simd` (ALIAS / INLINE / NATIVE / REFUSE), shared symbols with lance-graph-onnx, name-checked | In PR | docs review |
| D-XLOG-NATIVE-0 | crosswalk of XLOG plan nodes onto `ndarray::simd` (ALIAS / INLINE / NATIVE / REFUSE), shared symbols with lance-graph-onnx, name-checked | Shipped (#1866) | docs |
| D-XLOG-NATIVE-1 | test the selection rows (eq/ne_u32_to_mask, i32 comparisons, mask_and/or/andnot) against the probe's two oracles, signatures checked | Queued | N2 |
| 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-LITHO — the photolithography contract (2026-10-30)

Expand Down
12 changes: 12 additions & 0 deletions .claude/board/entries/2026-10-31-d-xlog-native-5-bindstore-epi5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# D-XLOG-NATIVE-5 — XLOG bag count bound through the production bind store; Epi5 reading of XLOG results

**Date 2026-10-31 · Status IN PR · Plan `.claude/plans/d-xlog-native-v1.md` Amendment A**

- `crates/xlog-relcomp-probe/tests/dto_binding.rs` routes, seals and admits through `lance-graph-dt64` (`BindStore`, `dr::FrameStore`, `MethodRef`). The count is three steps over two polyfill words, named by position in one lab polyfill lens: mask-risc's keyed count twice, then `checked_binary_i64(Mul)`. Refusals: stale frame (`MapChanged`), retracted position (`Unrouted`). Execution stays in the lab register, which refuses the admitted Bag population (`BagNeedsMultiplicity`).
- `tests/epi5_reading.rs` covers XLOG results written as `CausalEdge64` bits 59..63:
- a base fact is `Direct × Open`; a composed edge with Y retained is `IndirectKnown × Open`;
- the reading is refused when undeclared or under `V1Legacy` provenance;
- an unstamped composed edge reads as `Direct`.
- Plan Amendment A: a binding names mask-risc's op vocabulary (addenda 8 and 9); the `ndarray::simd` column is what an executor would call.

**OPEN:** method identity (`MethodSignature` / `MethodRef` / `MethodKey`, EXO-50); frame catalogue extent (D8); production classids and the XLOG Epi5 declaration (OGAR); many-to-many join home (D-XLOG-NATIVE-3).
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# D-XLOG-NATIVE-6 — the XLOG probe executes on the ndarray::simd polyfill

**Date 2026-10-31 · Status IN PR · Plan `.claude/plans/d-xlog-native-v1.md` Amendment B**

`crates/xlog-relcomp-probe/src/native.rs` answers the admitted two-atom chain:
- support: `eq_u32_to_mask` for bound ends, `mask_scatter_or_u32` onto Y, then `mask_and`;
- bag count: `masked_group_count_u32` for each side, then `checked_binary_i64(Mul)` (ndarray #407).

The Y axis is DR's `LocalMap`, so the path answers 200 Y where the register's 64-slot tile refuses. `admit_count` admits XLOG's `count` rule. The register path remains as the differential, with every mask compared in Gate B. CubeCL was not needed.

**OPEN:** a many-to-many join keeping both ends, and chains past two atoms (still NATIVE); the overflow refusal has no reachable 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,10 +25,12 @@ 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.

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

| date | entry id | finding | file |
|---|---|---|---|
| 2026-10-31 | `D-XLOG-NATIVE-6` | | [2026-10-31-d-xlog-native-6-ndarray-simd-execution.md](2026-10-31-d-xlog-native-6-ndarray-simd-execution.md) |
| 2026-10-31 | `D-XLOG-NATIVE-5` | | [2026-10-31-d-xlog-native-5-bindstore-epi5.md](2026-10-31-d-xlog-native-5-bindstore-epi5.md) |
| 2026-10-31 | `D-SAG-6-2-JOIN-IDENT` | | [2026-10-31-d-sag-6-2-span-join-identity.md](2026-10-31-d-sag-6-2-span-join-identity.md) |
| 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) |
Expand Down
Loading
Loading