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-V1-TAIL-FORBIDDEN-V3-IS-CONTENT-BLIND-1: the flat contiguous-u24 tail (`family:u24 ++ identity:u24`) is V1-LEGACY, FORBIDDEN for new units; V3 is the content-blind 4+12 facet whose 12B the ClassView projects as axis-grouped byte rails — migration of residues MANDATORY
**Status:** RULING (operator, 2026-07-04). Specializes/enforces `E-V3-FACET-4-PLUS-12` (operator-locked 2026-07-02) with an explicit *forbidding* + a *mandatory-migration* stamp. Reverses the older 2026-06-10 OGAR P0 pin (u24+u24) and this repo's own 2026-06-13 CANON block (which still document the flat tail) — latest operator word wins; both are regraded in place, append-only, never deleted.

**The shape (settled after a 4-turn operator correction of the model's stale framing):**
- **V1 (FORBIDDEN for new):** key tail bytes 10..16 = `family(u24) ++ identity(u24)` — two contiguous flat integer fields, **no axis**. `NodeGuid::new` / `family()` / `identity()` / `GuidParts`.
- **V2:** `leaf(u16)·family(u16)·identity(u16)` — three flat u16s (the deprecated integer read). `new_v2` / `family_v2()`.
- **V3 (REQUIRED for new):** the **content-blind 4+12 facet** — `classid(4) + 12-byte payload`. The 12B is a **dumb byte register**; the classid's **ClassView projects it and holds every reading at once**, picking per read. Sanctioned carves (le-contract §3, `E-V3-FACET-4-PLUS-12`): `6×(u8:u8)` rails (`part_of:is_a` / `X:Y` / `palette256:palette256` / `segment:taxonomy` / typed) · `4×(u8:u8:u8)` SPO triplets · `3×(u8:u8:u8:u8)` odoo quads. **`u8:u8` is two separate bytes — NEVER widened to u16/u24.** Byte accounting: `6×2 = 4×3 = 3×4 = 12`.

**Why the u24 tail is forbidden, not merely "old":** a flat u24 has **no axis** — it cannot carry a rail (`X:Y`). It is not a width variant of the facet; it is a structurally different (retired) shape. The model's earlier "escalating catalogue, pick a layout" framing was WRONG: V3 is not a mint-time choice among L1–L8, it is one content-blind register the ClassView reads polymorphically (le-contract §2 slot-purity: "the SoA is dumb bytes; the class makes them meaningful").

**Conformance sweep (this session, 3 read-only audits):**
- **ruff:** already V3 — `ruff_spo_address::Facet` = `classid(4) + 6×(is_a:part_of)`; harvest crates emit string SPO triples only. **No V1. No-op.**
- **OGAR:** *code* already V3 (`ogar-from-ruff` via `ruff_spo_address::Facet`) or the 8:8 `ogar-fma-skeleton::Guid` (classid 2→4 open, F-2); zero u24 emit. Only OGAR *docs* pinned/defended V1 → superseded this session (OGAR PR: `CLAUDE.md` P0 regraded, `NODEGUID-CANON-AUDIT` F-3 inverted, `DISCOVERY-MAP` `D-V1-TAIL-RETIRED`).
- **lance-graph:** the only live V1 producers are **2 pre-existing sites** — `contract/src/ocr.rs:121` (#496 OCR keystone) + `contract/src/aiwar.rs:104` — both hardcode `NodeGuid::new` (V1) instead of `mint_for(classid_read_mode(c).tail_variant,…)`. Behaviorally fine today (V1-default classids) but MANDATORY to migrate when their output paths move onto a V3-marked classid. Tracked: `ISSUES.md` `ISS-V1-TAIL-RESIDUE`.

**Mandatory follow-ups (deferred timing, not deferred obligation):** migrate `ocr.rs:121` + `aiwar.rs:104` onto `mint_for`/V3-marked classids; a `/v3-audit` grep-forbid of new `NodeGuid::new(` in non-test code; regrade this repo's CLAUDE.md CANON block (done in the same PR as this entry); OGAR promote `V3-TRANSPILER-ADR` RFC→adopted + reconcile `ogar-fma-skeleton::Guid` classid 2→4.

**Cross-refs:** `E-V3-FACET-4-PLUS-12` + `soa_layout/le-contract.md` §2/§3 (operator-lock), `E-V3-DUAL-SCHEMA-0x1000-IS-PERMANENT-1`, `canonical_node.rs` (`TailVariant::{V1,V2,V3}`, `mint_for`, `new`/`family()`/`identity()` V1 surface), `ISSUES.md` `ISS-V1-TAIL-RESIDUE`, OGAR `D-V1-TAIL-RETIRED` + `NODEGUID-CANON-AUDIT` F-3, `ruff_spo_address::Facet`. Supersedes the flat-tail framing in this repo's CLAUDE.md CANON block + OGAR CLAUDE.md P0 (both regraded, append-only).

## 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").

Expand Down
14 changes: 14 additions & 0 deletions .claude/board/ISSUES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Issues Log — Open + Resolved (double-entry, append-only)

## 2026-07-04 — ISS-V1-TAIL-RESIDUE — two pre-existing `NodeGuid::new` (V1 `u24+u24`) mint sites must migrate to V3 (`mint_for` / V3-marked classid)

**Status:** OPEN — **MIGRATION MANDATORY** (operator ruling 2026-07-04, `E-V1-TAIL-FORBIDDEN-V3-IS-CONTENT-BLIND-1`). Deferred in *timing*, not in *obligation*; NOT to be churned into unrelated PRs. Owner: whoever next moves each output path onto a V3-marked classid.

**The residue.** The flat V1 tail `family(u24) ++ identity(u24)` is forbidden for new units; V3 is the content-blind `classid(4)+12B` facet (`E-V3-FACET-4-PLUS-12`). A read-only conformance audit of the whole repo found the V1 tail *produced* at exactly two live sites, both hardcoding `NodeGuid::new(...)` instead of the canonical `mint_for(classid_read_mode(c).tail_variant, …)` dispatch:
- `crates/lance-graph-contract/src/ocr.rs:121` — the #496 OCR→`NodeRow` keystone.
- `crates/lance-graph-contract/src/aiwar.rs:104` — the aiwar `NodeRow` builder.

Both currently target V1-default/OSINT classids, so they are **behaviorally correct today** — the defect is that they bypass the `mint_for` dispatch that is supposed to make a class's V1→V3 flip a one-line registry change. Everything else in the repo is either a test (`#[cfg(test)]`) or a legitimate legacy-compat *read* (`family()`/`identity()` fallback arms in `soa_graph.rs`, `hhtl.rs` prefix routing) — reads stay, per `I-LEGACY-API-FEATURE-GATED`; only new *mints* are forbidden.

**Resolution (mandatory, when each output path is next touched).** Route each site through `mint_for(classid_read_mode(classid).tail_variant, …)` with a V3-marked classid; add a `/v3-audit` grep that forbids new `NodeGuid::new(` in non-test code so the guard is mechanical. Blocker to note: `mint_for`/`new_v2` sit behind `guid-v2-tail` (default-off) — un-gate `mint_for` (V1 arm unconditional, V2/V3 under the feature) before pointing production mints at it.

**Cross-ref:** `EPIPHANIES.md` `E-V1-TAIL-FORBIDDEN-V3-IS-CONTENT-BLIND-1`, `E-V3-FACET-4-PLUS-12`, `canonical_node.rs` (`TailVariant`, `mint_for`, `new`), OGAR PR (canon supersession) + `D-V1-TAIL-RETIRED`.

## 2026-07-01 — ISS-Q2-CASCADE3-NIBBLE-ANCESTRY — q2 `cascade3` FNV bytes are byte-hierarchical but NOT nibble-hierarchical; HHTL routing over bake mints is sound only at whole-tier granularity

**Status:** OPEN (falsifier specified, not yet run — q2 push gate WAIVED 2026-07-02, "temporary precaution … you can unarm that"; runnable now, D-VCW-5). Owner:
Expand Down
27 changes: 24 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -1317,6 +1317,26 @@ All findings in `.claude/knowledge/session_autocomplete_cache.md`.
> Operator-locked this session. Append-only. Wrapper `NodeGuid` (#480) is audited
> against THIS, never the reverse. No RFC-9562 ceremony in the hot key.

> **⊘ SUPERSEDED — MIGRATION MANDATORY (operator, 2026-07-04).** The
> `10..13 family (u24)` / `13..16 identity (u24)` tail below — two
> contiguous **u24** bit-groupings (`family:u24 ++ identity:u24`) — is
> **V1-LEGACY and forbidden for new units.** A flat u24 has no axis: it
> cannot carry a rail (`X:Y`), so it is a structurally retired shape, not a
> width variant. Every new unit is the **V3 content-blind 4+12 facet**
> (`classid(4) + 12-byte payload`, operator-locked `E-V3-FACET-4-PLUS-12`,
> 2026-07-02; ruling `E-V1-TAIL-FORBIDDEN-V3-IS-CONTENT-BLIND-1`,
> `.claude/board/EPIPHANIES.md`). The 12B is a **dumb byte register the
> ClassView projects** — it holds every sanctioned reading at once, carved
> per `.claude/v3/soa_layout/le-contract.md` §3 as `6×(u8:u8)` rails /
> `4×(u8:u8:u8)` SPO triplets / `3×(u8:u8:u8:u8)` odoo quads
> (`6·2 = 4·3 = 3·4 = 12`). **`u8:u8` = two separate bytes, NEVER widened
> to u16 or u24.** Reads of the u24 tail on existing V1 rows survive
> unchanged (I-LEGACY-API-FEATURE-GATED); only new **mints** are forbidden
> — route them through `mint_for(classid_read_mode(c).tail_variant, …)`,
> never `NodeGuid::new` (V1). Append-only: the pin below is NOT deleted;
> read it as the retired V1 tail. Live residue tracked in
> `.claude/board/ISSUES.md` `ISS-V1-TAIL-RESIDUE`.

**Node = 4096 bit = 512 byte:** `key(16) | edges(16) | value(480)`.

**Key (16 byte, little-endian):**
Expand All @@ -1325,11 +1345,12 @@ All findings in `.claude/knowledge/session_autocomplete_cache.md`.
4..6 HEEL (u16) ┐
6..8 HIP (u16) ├ 3 cascade tiers (HHTL path)
8..10 TWIG (u16) ┘
10..13 family (u24) ┐ trailing 6 bytes = basin-local key
13..16 identity (u24) ┘ (masked load after the trie binds the prefix)
10..13 family (u24) ┐ V1-LEGACY tail — read-only; new units mint the
13..16 identity (u24) ┘ V3 4+12 facet (see ⊘ supersession above)
```
`local_key()` = bytes 10..16 (family ++ identity), the only discriminator once
the prefix is resolved.
the prefix is resolved. **[V1-LEGACY — reads only; new mints use the V3
content-blind facet.]**

**Edge block (16 byte):** 12 in-family + 4 out-of-family, one byte per slot.
Canonical, NOT mandatory — always reserved (zeroed when unused), never shrunk; a
Expand Down