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
19 changes: 19 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,22 @@
## 2026-07-04 — E-V3-DEEPNSM-IS-THE-ENCODER-NOT-A-MIGRATION-1: DeepNSM does not migrate ONTO V3 — it is the trained encoder that fills tenants V3 already reserved; the static convergence is PROVEN (#624 P0–P5), only the MEMORY layer is doc-only
**Status:** FINDING (mapper-sweep synthesis — 4 parallel contract mappers over deepnsm+COCA / V3 substrate / representation zoo / arm-discovery+grammar, all file:line-grounded this session; NOT an operator ruling, NOT a lock — a scoreboard + a reframe, collapses no type, retires no enum). Specializes `E-V3-TENANTS-ALREADY-EXIST-WIRE-DONT-INVENT` to the DeepNSM question the operator raised ("migrate everything of DeepNSM to V3 … check convergence with cam_pq 48-bit vs 6×palette256² vs causaledge64 vs SPO nars 2³ … episodic witness / AriGraph basins").

**The reframe (the valuable correction):** the operator's "cam_pq 48-bit **vs** 6×palette256² **vs** causaledge64 **vs** SPO-nars-2³" is not four rival representations to choose between — it is **one composed stack, bottom-to-top**: node-code (CAM-PQ) → edge (`CausalEdge64`) → truth-projection (NARS 2³) → memory (episodic/basin). Three of the four "vs" are category errors: (a) CAM-PQ 48-bit `[u8;6]` and 6×palette256² are the *code* and its *distance-table dual* of ONE object (proven byte-exact, #624 P1); (b) `CausalEdge64` is an *edge*, not a node code; (c) SPO-NARS-2³ is a *truth projection computed over* a distance matrix, not a representation. "Migrate DeepNSM onto V3" is the wrong frame — **DeepNSM is the trained encoder that FILLS tenants V3 already reserved**, not a payload to port.

**The wired/doc-only scoreboard (the new contribution over #624/#626):**
- **node-code** — CAM-PQ code+table dual PROVEN (#624 P1); the key `HEEL|HIP|TWIG` ↔ 256×256 centroid-tile identity is **doc-asserted only** (OGAR framing, no shared type; no `ValueTenant::CamPq`).
- **edge** — `EdgeBlock`(16 B, 1-byte refs) → `ValueTenant::MaterializedEdges`(4×`CausalEdge64`) **WIRED in code** (`canonical_node.rs`).
- **truth** — the 3-bit Pearl mask + freq/conf are **STORED** in `CausalEdge64` (bits 40-42 / 24-39); the 8-projection vector is a **COMPUTE** over `SpoDistances` 3×256² (`nars_engine.all_projections`, #624 P3b), not a stored region. PARTIAL.
- **memory** — **NO episodic-witness `ValueTenant`**; `episodic_edges.rs` EW64 + `graph/witness_tombstone.rs` exist but the calcify chain is `todo!()` scaffold. `basin = family` is **doc-only** — the AriGraph runtime references neither `NodeGuid`, `family`, nor `basin` (grep-confirmed); episodic keys on its own `Fingerprint+step`. This is the genuinely-unbuilt layer and the real risk.

**The recognition (task #17):** the COCA gridlake `Cell` (`gridlake_coca_wire.rs`, 20 B: `helix48[u8;6] + campq48[u8;6] + count + sum_truth`) is a **byte-subset of tenants that already exist** — `helix48 ≡ ValueTenant::HelixResidue` (6 B, "48-bit helix place, 2× Signed360 hemisphere"); `campq48 ≡` the canonical 6 B CAM-PQ code (the Phase-2 facet re-reads HelixResidue+CAM-PQ as one 16 B facet); `count/sum_truth ≡ Meta` MetaWord `nars_f+nars_c`. So "migrate the COCA landing" = land it as a `ValueSchema` READING over existing tenants, consuming the 328 B reserved headroom, **zero new tenant, no `ENVELOPE_LAYOUT_VERSION` bump** — a recognition, not a port. Also corrects a stale doc: **DeepNSM is NOT 0-dep** (CLAUDE.md line stale) — it already depends on `lance-graph-contract` + `ndarray` (PR #279), so the contract coupling is already paid.

**Collision guards (pin before any code):** "6×256" names THREE objects (CAM-PQ per-query ADC `[[f32;256];6]` / `SpoDistances` 3×256² pairwise / OGAR key-tier centroid tile); "basin" names TWO (perturbation-sim electrical/Kron basin vs canonical `family`) — only the latter maps to the key. Treating any doc-asserted identity (key↔CAM-tile, basin=family, MailboxId=NiblePath) as if wired is the trap.

**PROMOTION/NEXT:** plan `.claude/plans/deepnsm-v3-convergence-v1.md` sequences D-DNV-1 (recognition = task #17, buildable) → D-DNV-2 (SPO→CausalEdge64+2³ on real COCA, buildable) → D-DNV-3 (arm-discovery second leg, GATED on `ARM-JIRAK-FLOOR`) → D-DNV-4 (memory tenant, own wave + probe). No code bound to the memory-layer claims until their probe is green.

**Cross-refs:** PR #624 (P0–P5 probes, `lance-graph-osint/tests/`), `E-V3-TENANTS-ALREADY-EXIST-WIRE-DONT-INVENT` (#626), `E-V3-JINA-IS-THE-FULCRUM-SUBSTRATE-MEASURED-1`, `canonical_node.rs` (`ValueTenant`/`VALUE_TENANTS`/`ValueSchema`, HelixResidue+MaterializedEdges+Meta), `crates/deepnsm/` (encoder 512-bit `[u64;8]` / spo.rs 36-bit / gridlake examples), `crates/lance-graph-arm-discovery/` (Aerial+ palette256 oracle), `nars_engine.rs`, `arigraph/markov_soa.rs` (already V3-native — `MailboxSoaView` + `cam_pq::DistanceTables`), `episodic_edges.rs`, `graph/witness_tombstone.rs`, task #17, `v3-convergence-wiring-v1`.

## 2026-07-03 — E-V3-THINK-ATOMS-GRIDDED-PERTURBATION-CASCADE-1 [CONJECTURE, probe-gated — nothing retired/locked]: both think & do are methods on a ClassView-as-struct-of-methods; atoms are fractal ClassViews fanned out over the Morton grid; DATA via perturbation cascade / META via bundle; bundle-above / address-below cost crossover
**Status:** CONJECTURE — architectural model co-developed this session over 6 turns. The GROUNDING is FINDING/receipted; the SYNTHESIS is UNPROVEN. Explicitly NOT an operator ruling, NOT a lock, NOT a retirement — collapses no type, retires no enum, refactors no code, supersedes no shipped decision until the reconstruction probe runs green. Operator directive: **keep an open mind — the valuable result may be the residual the probe CANNOT fit.**

Expand Down
4 changes: 4 additions & 0 deletions .claude/board/INTEGRATION_PLANS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 2026-07-04 — deepnsm-v3-convergence (DeepNSM is the encoder that fills reserved tenants, not a migration target)

Plan: `.claude/plans/deepnsm-v3-convergence-v1.md`. **Answers the operator's "migrate everything of DeepNSM to V3 + check convergence with cam_pq 48-bit vs 6×palette256² vs causaledge64 vs SPO-nars-2³ vs episodic-witness/AriGraph-basins" question with a mapper-grounded scoreboard** (`E-V3-DEEPNSM-IS-THE-ENCODER-NOT-A-MIGRATION-1`). Reframe: those are not four rival representations but ONE composed stack (node-code → edge → truth → memory); DeepNSM is the trained encoder that fills tenants V3 already reserved, not a payload to port. **The static convergence is already PROVEN** (#624 P0–P5: deepnsm→palette ≡ arm-discovery byte-exact, `CausalEdge64` round-trip, Pearl 2³, Aerial+ ARM→`CausalEdge64`, NAL reasoning); this plan credits that baseline and names the genuinely-unbuilt seam: the **memory layer** (no episodic-witness `ValueTenant`; `witness_tombstone.rs` calcify chain is `todo!()`; `basin=family` is doc-only — AriGraph runtime references neither `NodeGuid` nor `family`). **The recognition:** the COCA gridlake `Cell` (`helix48+campq48+count/truth`) is a byte-subset of `HelixResidue` + CAM-PQ facet + `Meta` — landing it is a `ValueSchema` READING over existing tenants (zero new tenant, no version bump), = task #17. Deliverables: D-DNV-1 recognition (task #17, buildable) → D-DNV-2 SPO→`CausalEdge64`+2³ on real COCA (buildable) → D-DNV-3 arm-discovery second leg (GATED on `ARM-JIRAK-FLOOR`) → D-DNV-4 memory tenant (own wave + probe). Extends `v3-convergence-wiring-v1` (wire-don't-invent); does not supersede it. Doc-only. PROPOSED.

## 2026-07-02 — v3-substrate-integration (W0–W6; the .claude/v3/ consolidation)

Plan: `.claude/v3/INTEGRATION-PLAN.md` (pointer stub at `.claude/plans/v3-substrate-integration-v1.md` — operator directed a dedicated `.claude/v3/` folder for overview). **Consolidates the 2026-07-02 operator rulings into one wave-ordered execution plan**: W0 ratify/document (the `.claude/v3/` tree + awareness layer: knowledge docs, `v3-*` agent cards, `/v3` skill, `/v3-audit` command, CLAUDE.md/BOOT.md entrypoints) → W1 envelope+ownership (the keystone: `mailbox_owner()` SHIPPED; ahead-firing batch writer `cast(on_behalf, BusDto)` + delegation cache) → W2 kanban executors (D-MBX-A6 adopt; board-as-TENANT; supervisor sole-mutator wiring; symbiont arm BLOCKED on surrealdb kv-lance coordinates; 550 ms budget via elevation) → W3 compiled templates (StepMask; ElixirTemplate→graph-flow adapter with ownership inheritance; Rig oracle equivalence-gated compile-down; catalogue internal until P4) → W4 DTO ladder (D-PERT-1 adopt; cast-pairing call sites) → W5 consumers (q2 re-bakes/cpic mereology; write-on-behalf adoption; D-VCW-3/5 probes) → W6 monitor & retirement (ONE two-metric range-count scanner; P4 = adoption 100%, operator checkpoint; alias retirement corpus-proof-gated). Principle carried over: wire, don't invent — the plan adopts existing D-ids (D-MBX-A6, D-PERT-1, D-CC-*, D-VCW-*, D-CCF-4) rather than re-minting. Extends `v3-convergence-wiring-v1` + `soa-value-tenant-migration-v2`; supersedes stale CollapseGate prose everywhere via primer §6. ACTIVE.
Expand Down
112 changes: 112 additions & 0 deletions .claude/plans/deepnsm-v3-convergence-v1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# DeepNSM → V3 substrate convergence — v1

> **Status:** PROPOSED (doc-only). Extends `v3-convergence-wiring-v1`
> ("wire, don't invent"). Credits PR #624 (probes P0–P5) as the proven
> static baseline. Does NOT supersede any shipped decision.
>
> **Organizing frame:** DeepNSM is **not migrated onto** the V3 substrate —
> it is the **trained encoder that fills tenants V3 has already reserved.**
> The COCA gridlake `Cell` is a byte-subset of existing value tenants; the
> "migration" is a *recognition* (a `ValueSchema` reading), not a port.

---

## 0. What is already proven (do not re-derive)

PR #624 landed probes P0–P5 (`crates/lance-graph-osint/tests/`), each an
integer-exact `#[test]` that de-blackboxes one convergence claim against
shipped code:

- **P1** — deepnsm `subspace_distance_table` → quantize → palette →
`SpoDistances::s_dist` (planner) **≡** `MatrixDistance::distance`
(arm-discovery), byte-exact over 4096 pairs. *(node-code layer)*
- **P2/P3/P3b** — `CausalEdge64::pack_v2` round-trips S/P/O + mask + freq/conf;
the 8 Pearl masks = 8 questions from 3 cached reads; Association vs
Intervention rank candidates oppositely. *(edge + truth layers)*
- **P4** — Aerial+ ARM mines a rule, deterministic, `arm_to_truth_u8 →
CausalEdge64`. *(discovery layer)*
- **P5** — `is_a` transitivity via `syllogize`, exact NAL truth. *(reasoning)*

The reframe is also prior art: `E-V3-TENANTS-ALREADY-EXIST-WIRE-DONT-INVENT`
(#626). This plan is the DeepNSM-specific application of it.

**Consequence:** the "check convergence of CAM-PQ / CausalEdge64 / SPO-NARS-2³ /
arm-discovery" question is **answered — they converge at one integer-exact
256×256 palette metric, proven.** The open work is the *memory* layer and the
*gridlake carrier landing*, below.

## 1. The four-layer stack (not four rival representations)

The representations named as "vs" are one composed stack, bottom to top:

| Layer | Object | V3 home | Status |
|---|---|---|---|
| node-code | CAM-PQ `[u8;6]` (`Heel/Branch/TwigA/TwigB/Leaf/Gamma`) + its `[[f32;256];6]` ADC-table **dual** | `HelixResidue`(6B) + facet re-read; key `HEEL\|HIP\|TWIG` (doc-asserted tile) | code/table dual proven P1; key↔tile identity **doc-only** |
| edge | `CausalEdge64` (u64: S/P/O + freq/conf + causal/dir/infer/W/lens) | `EdgeBlock`(16B, 1-byte refs) → `ValueTenant::MaterializedEdges`(4×u64) | **wired** |
| truth | SPO-NARS 2³ (8 Pearl masks over `SpoDistances` 3×256²) | 3-bit mask in `CausalEdge64` bits 40-42; freq/conf; `Meta` tenant | mask **stored**, projections **computed** (P3) |
| memory | episodic witness + AriGraph basin | `family` field (basin); `episodic_edges.rs` EW64; `witness_tombstone.rs` | **doc-only / scaffold `todo!()`** |

**Collision guards** (from the mapper sweep — pin before any code):
- "6×256" names **three** objects: CAM-PQ per-query ADC table `[[f32;256];6]`;
`SpoDistances` 3×256² pairwise; OGAR key-tier 256×256 centroid tile. Not
interchangeable.
- "basin" names **two**: perturbation-sim electrical/Kron basin (Laplacian
Schur complement) vs canonical `family`. Only the latter maps to the key.
- CAM-PQ 48-bit and 6×palette256² are **not alternatives** — they are the
*code* and its *distance-table dual*.

## 2. The recognition: the COCA `Cell` IS the value slab

`crates/deepnsm/examples/gridlake_coca_wire.rs` hand-rolls a 20-byte `Cell`
that is a byte-subset of tenants `canonical_node.rs` already carves:

| COCA `Cell` field | V3 tenant (exists today) |
|---|---|
| `helix48: [u8;6]` | `ValueTenant::HelixResidue` — 6 B, "48-bit helix place, 2× Signed360 hemisphere" |
| `campq48: [u8;6]` | canonical 6 B CAM-PQ code (the Phase-2 facet re-reads HelixResidue + 6 B CAM-PQ as one 16 B facet) |
| `count` / `sum_truth` | `ValueTenant::Meta` MetaWord `nars_f(8)+nars_c(8)` |

So "migrate the COCA landing to V3" = land it as a `ValueSchema` reading over
existing tenants, consuming the **328 B reserved headroom, zero new tenant, no
`ENVELOPE_LAYOUT_VERSION` bump**. This is task #17 (gridlake carrier / lane J)
and is the natural first step. It also retires the codec's "deterministic
stand-in" status by pointing it at the real HelixResidue + CAM-PQ contract.

## 3. Staged deliverables (ordered by wired-ness)

- **D-DNV-1 (recognition, = task #17).** Land the COCA/gridlake landing as a
`ValueSchema` reading over `HelixResidue` + CAM-PQ facet + `Meta`. Zero new
Comment on lines +77 to +78

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Correct the ValueSchema CAM-PQ mapping

With D-DNV-1 implemented as written, campq48 has no value-slab home: ValueSchema only selects ValueTenant bits, and the tenant enum in crates/lance-graph-contract/src/canonical_node.rs:731-743 has HelixResidue/TurbovecResidue but no CAM-PQ tenant; the Pair48 CAM-PQ shape lives in crates/lance-graph-contract/src/facet_schema.rs:13-33 as a FacetCascade reading, not a tenant. The plan should route CAM-PQ through that facet/key path or reserve a real tenant, otherwise task #17's “zero new tenant” implementation cannot actually materialize campq48.

Useful? React with 👍 / 👎.

tenant. jc-pillar certification (ICC/ρ/α, certification-officer pattern)
before the reading backs any claim. *Buildable now.*
- **D-DNV-2 (SPO → CausalEdge64 + 2³, deepen P1/P3).** Map deepnsm `SpoTriple`
(36-bit S/P/O) onto `CausalEdge64` S/P/O + freq/conf → `MaterializedEdges`;
Comment on lines +81 to +82

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Account for 12-bit SPO ranks before packing edges

When D-DNV-2 runs on real DeepNSM triples, direct packing aliases most vocab ranks: SpoTriple stores each role as a 12-bit 0..4095 rank (crates/deepnsm/src/spo.rs:1-17, :38-42), but CausalEdge64 S/P/O are only 8-bit palette indices (crates/causal-edge/src/edge.rs:126-132). The plan needs an explicit 12→8 codebook/bucket mapping or sidecar for full ranks before writing MaterializedEdges; otherwise any role >=256 will be truncated/collided.

Useful? React with 👍 / 👎.

run `nars_engine.all_projections()` over deepnsm's COCA distance matrix. The
rung decomposition on real COCA data. *Buildable now; extends #624 P3b.*
- **D-DNV-3 (arm-discovery second leg — GATED).** ARM (rule-mine proposer) and
deepnsm-FSM (grammar-parse proposer) already share the palette256 oracle
(ρ=0.9973); wire both into one SpoStore. **Blocked on `ARM-JIRAK-FLOOR`**
(D-ARM-7) — the Jirak noise floor is a hard prereq before touching a live
`SpoStore`. Do not build the live join before its probe.
- **D-DNV-4 (memory layer — the real new work, own wave).** No episodic-witness
`ValueTenant` exists; `witness_tombstone.rs` calcify chain is `todo!()`;
`basin = family` is doc-only (AriGraph runtime references neither `NodeGuid`
nor `family`). This is a genuinely-new tenant (or the witness_tombstone
build) + waking the `family` basin field — highest risk, most doc-only.
Its own probe + jc certification; must NOT ride D-DNV-1..3.

## 4. Explicitly out of scope

- Grammar **templates** as compiled thinking templates (StepMask) — that is
W3, a separate wave; `StepMask` does not exist in source yet.
- Any new `ValueSchema` enum variant (#496/#500 no-new-variant guardrail).
- Superposing CAM-PQ codes (`I-VSA-IDENTITIES`: bundle identities, not content).

## 5. Cross-refs

PR #624 (P0–P5 probes), `E-V3-TENANTS-ALREADY-EXIST-WIRE-DONT-INVENT`,
`E-V3-JINA-IS-THE-FULCRUM-SUBSTRATE-MEASURED-1` (deepnsm COCA measured vs Jina),
`v3-convergence-wiring-v1`, `canonical_node.rs` (`ValueTenant`, `VALUE_TENANTS`,
`ValueSchema`), `crates/deepnsm/` (encoder/spo/parser + gridlake examples),
`crates/lance-graph-arm-discovery/` (Aerial+ leg), `nars_engine.rs`
(`all_projections`, `SpoHead`), `arigraph/markov_soa.rs` (already V3-native),
`episodic_edges.rs` + `graph/witness_tombstone.rs` (the memory seam), task #17.