Skip to content

Commit 1eaf2a7

Browse files
authored
Merge pull request #128 from AdaWorldAPI/claude/serene-mayer-1a09he
docs(canon): value-slab facet closure + classid-driven envelope parser (V2/V3, 0x1007 gen marker)
2 parents 597ecb1 + 339cf6b commit 1eaf2a7

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

.claude/board/EPIPHANIES.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,38 @@
77
88
---
99

10+
## 2026-06-25 — E-CLASSID-ENVELOPE-PARSER — V2/V3 (and value-schema/edge-codec) are classid-defined per file+consumer; ONE reusable envelope parser reads classid → registry → parse
11+
12+
**Status:** CONJECTURE (`[H]` — the composed parser is operator-proposed, "to be wired"; the pieces are `[G]`/CODED). Operator-directed 2026-06-25.
13+
14+
**The directive (operator example `0x1007`):** the **classid defines V2 vs V3 per file and per consumer** — the GUID-tail variant (V2 = `NodeGuid::new_v2` `leaf·family·identity` 3×u16, the `guid-v2-tail` feature; V3 = the `cascade_key` `(part_of:is_a)` 8:8 tile), AND the value-schema/facet (`Full`/`Compressed`/the E-VALUE-SLAB-FACET contained facet), AND the edge-codec flavor are ALL **resolved from the classid through the OGAR class registry**, never from a per-file format constant. This is OGAR P0 ("native/foreign discrimination lives in the `classid`, not a format constant") applied to the *envelope*.
15+
16+
**Generation marker (operator, 2026-06-25): a leading `1` before the domain → `0x1007`.** Because the change is *extreme* (a whole new classid-resolved read path), the new-generation classids carry a **leading `1` ahead of the domain byte** (`0x07` OSINT → `0x1007`) so they self-identify at sight and the reusable parser routes legacy vs new-generation envelopes from the prefix alone — a higher cascade level on the classid (P0 "scale = the next cascade level, never field-widening"; RESERVE-DON'T-RECLAIM keeps the legacy zero-prefix space untouched, never reclaimed). It lives in the **classid** (the schema pointer, where versioning belongs) — NOT a version nibble in the GUID tail (the canon forbids that). The exact u32 placement (a high-bits marker vs a domain-field prefix) is the registry/canon's to pin.
17+
18+
**The mechanism — one reusable, classid-driven envelope parser:** a single parser reads `classid → registry → {tail_variant, value_schema, edge_codec}` then parses the 512-byte envelope accordingly. One parser serves every consumer (q2 / woa-rs / medcare-rs / odoo-rs / openproject-nexgen-rs / …); no bespoke per-consumer parsing, no per-file version byte. It is the consumer-side realization of "classid is a schema pointer" (E-VALUE-SLAB-FACET) AND the single classid-late-bound read path that reconciles the slab↔parallel-`MailboxSoA` two-world seam — the one place the value is read.
19+
20+
**The pieces exist (`[G]`/CODED); the composition is the `[H]` to-wire:** `classid_read_mode()` + `BUILTIN_READ_MODES` (the registry — with a minted class's mode layered in by **OGAR one level up**), `ClassView::value_schema`/`edge_codec_flavor` (the resolver), `NodeGuid::new_v2` (V2 tail, gated `guid-v2-tail`), `cascade_key` V3 (the part_of:is_a tile), `node_rows_from_le_bytes` (the zero-copy reader). The registry entry must gain the **`tail_variant` (V2/V3)** axis beside `ReadMode {value_schema, edge_codec}`; the reusable parser dispatches on the full set. Same pattern as `E-ACTIONHANDLER-RESOLVER` (the action daemon is a renderer over the classid keyspace) — now the envelope **parser** is one too.
21+
22+
**Gate / next:** wiring the reusable parser + the registry's `tail_variant` axis is the build follow-up (probe-first per OGAR discipline); the lance-graph §6 panels arbitrate the value-schema/facet half. Cross-ref: E-VALUE-SLAB-FACET, E-ACTIONHANDLER-RESOLVER, D-VALFACET, D-ENVPARSE, D-IDENTITY-PIN (the new_v2/V2 LEAF audit, OGAR #118); lance-graph `soa-value-tenant-migration-v1-harvest.md` §5 + `canonical_node.rs` (`new_v2` gated, `classid_read_mode`).
23+
24+
---
25+
26+
## 2026-06-25 — E-VALUE-SLAB-FACET — the value-slab's homogeneous closure IS OGAR keyspace canon: the contained 16-byte `classid|helix|CAM-PQ` facet (lance-graph value-tenant harvest confirms)
27+
28+
**Status:** FINDING (`[G]` — the lance-graph value-tenant facts, code-confirmed) + CONJECTURE (`[H]` — the facet-as-closure, operator-proposed 2026-06-25, gated F-1 + F-code; pending the lance-graph §6 sign-off panels).
29+
30+
**Units pinned first (theorem-checker rule 0):** 48 bit = 6 byte. The facet = `facet_classid(4 byte) + helix-place(6 byte) + CAM-PQ(6 byte) = 16 byte = 128 bit` — the SAME width as the canonical key (32 hex = 128 bit = 16 byte).
31+
32+
The lance-graph Phase-1 value-tenant harvest (`soa-value-tenant-migration-v1-harvest.md`) asked whether the 480-byte value slab homogenizes. **It does not** — 9 of the 10 `ValueTenant`s are irreducibly heterogeneous (identity / scalars / bitfield / cursor) → KEEP, with Qualia i4-16D + the future thinking-style i4-32D DEFERRED for substrate validation. So §8 homogeneity reduces to "classid is a schema pointer" — OGAR's own P0. **The closure exists as ONE contained facet** the operator named: `facet_classid(4) | helix-place(6) | CAM-PQ(6)` — identity (helix place/residue, the frozen ruler) ⊥ search (CAM-PQ) ⊥ schema (facet_classid). This is **OGAR keyspace canon restated in the value**: the same recurring **6×256 CAM-PQ** shape as the key path (D-TILE256) and the same place/residue split as D-PHASE — now confirmed from the consumer side.
33+
34+
**Precision point (so it does not dilute):** the KEY's path (HEEL/HIP/TWIG) is a 6-byte CAM-PQ centroid-tile **address** (D-TILE256); the contained VALUE facet's 6-byte CAM-PQ is the **content/search** code, its 6-byte helix the place/residue. Same 6×256 shape, different role — address in the key, content in the value. The facet wants the **6-byte canonical CAM-PQ**, NOT lance-graph's 16-byte `TurbovecResidue` (turbovec 32×4-bit) — a width decision for the §6 panels. I-VSA-IDENTITIES-clean: helix ∥ CAM-PQ in disjoint byte ranges, concatenated, never bundled. Layout-preserving — a `classid → ClassView` reading, no new value-schema variant; it does not touch the GUID canon.
35+
36+
**Second finding — the two-world seam (`[G]`):** lance-graph carries the value tenants in TWO disjoint SoAs — the canonical `NodeRow.value` slab and a parallel `MailboxSoA` of separate columns; only `entity_type ≡ class_id` is shared, and 6/10 slab tenants have no live producer. Reconciling them is the consumer-side near-term work; OGAR's producer side (`ogar-vocab` codebook / `classid → ReadMode` mint) stays the single source either world resolves through.
37+
38+
Cross-ref: lance-graph `soa-value-tenant-migration-v1-harvest.md`; DISCOVERY-MAP `D-VALFACET`; canon D-TILE256 / D-PHASE / D-KEYKV.
39+
40+
---
41+
1042
## 2026-06-24 — E-ACTIONHANDLER-RESOLVER — the action daemon IS a renderer over the classid keyspace: transport, class, executor, guard, RBAC all fall out of the GUID, late
1143

1244
**Status:** FINDING (`[G]`, 19 tests).

docs/DISCOVERY-MAP.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,8 @@ two halves of a cell. ADR‑026 names the cascade that ties them.
244244
| D‑WHP | **bipolar phase = Walsh‑Hadamard on VSA**: signed (±1) phase makes the cascade the WH transform of the address tree; **sign = XOR (`vsa_bind`), magnitude = `vsa_bundle`** — the TWO‑ALGEBRA rule (raw‑XOR on magnitudes breaks Markov, I‑SUBSTRATE‑MARKOV); superposition + unbind‑by‑role‑key; N ≤ √d/4 IS the substrate's uncertainty principle; roundtrip bit‑exact; "quantum‑like" = the bundling algebra, NOT measurement randomness | H + probes (WHP‑1..4) | CANON‑pin | `CLAUDE.md` P0; ndarray §4b; lance‑graph §7 + E‑WHP‑BIPOLAR‑1 | D‑PHASE, D‑MANTISSA |
245245
| D‑DELEG‑INHERIT (né D‑OTP‑INHERIT) | DO‑axis behavior resolution = **prototype‑chain delegation** (Self, Lieberman 1986) carried ON the supervision topology — **NOT an OTP behavior** (supervisors restart, they don't dispatch); diamonds have NO prefix encoding (tree relation) → ordered `mixins` traversal is the absent second mechanism; Odoo = C3 over `LastOrderedSet` install order, not naive source C3 | H + gate F1 (chain + diamond fixture) | EPIPHANY | INTEGRATION‑MAP §3 + F1 | D‑CANON‑GUID, `[per rt]` state_machine |
246246
| D‑IDENTITY‑PIN | lance‑graph `NodeGuid` (#480) = the **wrapper carving** of the canon — groups 1–2 + 24‑bit `local` already match exactly; Phase B audits groups 3–4 yielding all eight nibbles to HIP/TWIG; `IDENTITY_LAYOUT_VERSION` stamp = the version gate | G (wrapper) / H (group 3–4 audit) | CODED (wrapper) | lance‑graph `identity.rs`; INTEGRATION‑MAP S1 | D‑CANON‑GUID |
247+
| **D‑VALFACET** | **value‑slab homogeneous closure = the contained 16‑byte facet** `facet_classid(4)+helix‑place(6)+CAM‑PQ(6)` — identity⊥search⊥schema; the value‑side restatement of canon (key path = 6‑byte CAM‑PQ **address** D‑TILE256; this facet's CAM‑PQ = the **content/search** code; helix = place/residue D‑PHASE); lance‑graph value‑tenant harvest CONFIRMS — 9/10 slab tenants don't homogenize (KEEP/DEFER, only HelixResidue matches) + the slab↔parallel‑MailboxSoA two‑world seam | G (harvest facts) / H (facet closure, gated F‑1+F‑code) | EPIPHANY | `.claude/board/EPIPHANIES.md` E‑VALUE‑SLAB‑FACET; lance‑graph `soa-value-tenant-migration-v1-harvest.md` | D‑TILE256, D‑PHASE, D‑KEYKV, D‑CANON‑GUID |
248+
| **D‑ENVPARSE** | **classid defines V2/V3 + value‑schema + edge‑codec per file+consumer; ONE reusable envelope parser reads `classid → registry → parse`** (operator `0x1007` — a leading‑`1` generation marker before the domain self‑identifies new‑gen envelopes; versioning in the classid/schema‑pointer, never a GUID‑tail nibble) — no per‑file format byte; the single classid‑late‑bound read path that also reconciles the two‑world seam; the registry entry gains a **`tail_variant` (V2/V3)** axis beside `ReadMode {value_schema, edge_codec}`; same shape as D‑ACTIONHANDLER‑RESOLVER (renderer over the classid keyspace) | G (pieces: classid_read_mode / ClassView / new_v2 / cascade_key‑V3 / node_rows_from_le_bytes) / H (the composed parser, to‑wire) | EPIPHANY→to‑wire | `.claude/board/EPIPHANIES.md` E‑CLASSID‑ENVELOPE‑PARSER; lance‑graph `canonical_node.rs` | D‑VALFACET, D‑IDENTITY‑PIN, D‑KEYKV, D‑TILE256 |
247249

248250
---
249251

0 commit comments

Comments
 (0)