Skip to content

Commit 4037e88

Browse files
authored
Merge pull request #151 from AdaWorldAPI/claude/v3-substrate-migration-review-o0yoxv
canon: retire the V1 u24+u24 GUID tail — migration mandatory
2 parents 36e64a9 + 7456c7e commit 4037e88

3 files changed

Lines changed: 40 additions & 1 deletion

File tree

CLAUDE.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,27 @@
66
77
## P0 — THE CANONICAL GUID (operator-pinned; counted in HEX, not bits)
88

9+
> **⊘ SUPERSEDED — MIGRATION MANDATORY (operator, 2026-07-04).** The flat
10+
> `family-basin-leaf(6) + identity(6)` tail below — two contiguous **u24**
11+
> bit-groupings (`family:u24 ++ identity:u24`) — is **V1-LEGACY and forbidden
12+
> for new units.** Every new unit is the V3 **content-blind 4+12 facet**
13+
> (`E-V3-FACET-4-PLUS-12`, lance-graph `soa_layout/le-contract.md` §3,
14+
> operator-locked 2026-07-02): `classid(4) + 12-byte payload`, the 12 bytes an
15+
> **axis-grouped byte register**`6×(u8:u8)` / `4×(u8:u8:u8)` / `3×(u8:u8:u8:u8)`
16+
> — whose reading (`part_of:is_a` / `X:Y` / `palette256:palette256` /
17+
> `segment:taxonomy` / typed content) the **classid's ClassView holds all at once**
18+
> and picks per read. `u8:u8` stays two separate bytes — **never widened to u16
19+
> or u24.** A flat u24 has **no axis** and cannot carry a rail; that is why it is
20+
> retired. Append-only: the pin is NOT deleted — the u24 tail stays **read-only for
21+
> pre-flip GUIDs**, regraded V1-legacy in place. Producer already V3 in code:
22+
> `ruff_spo_address::Facet` (`facet_classid:u32 + 6×FacetTier{lo:u8,hi:u8}`) via
23+
> `ogar-from-ruff` mint/emit. Paired follow-ups (mandatory): promote
24+
> `docs/V3-TRANSPILER-ADR.md` RFC→adopted; reconcile `ogar-fma-skeleton::Guid`
25+
> classid 2→4 (F-2); invert `docs/NODEGUID-CANON-AUDIT.md` F-3 (see its dated note).
26+
927
```
1028
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
11-
classid HEEL HIP TWIG family-basin-leaf(6) + identity(6)
29+
classid HEEL HIP TWIG family-basin-leaf(6) + identity(6) ← V1-LEGACY tail (read-only; new units use the V3 4+12 facet, above)
1230
8 hex 4 hex 4 hex 4 hex 12 hex
1331
```
1432

docs/DISCOVERY-MAP.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ two halves of a cell. ADR‑026 names the cascade that ties them.
130130
| D‑FMA‑SKELETON | FMA skeleton = the **clamped convergence anchor**: ~206 bones as immutable **16×8‑bit Morton‑tile family‑node** addresses derived from rest‑pose centroids ⟹ prefix = partonomy = spatial containment (D‑BOTHCASC realized); bones are non‑negotiable Dirichlet anchors, the cross‑modal frame ViT / X‑ray / ultrasound × Doppler register onto. Address structure CODED; splat‑fit convergence CONJECTURE. | G (structure) / H (convergence) | CODED | `crates/ogar-fma-skeleton` + `docs/FMA-SKELETON-CONVERGENCE-ANCHOR.md` | D‑MORTON; `SPLAT-NATIVE-CUSTOMER.md` §6 |
131131
| D‑GUID‑TIER | The brutal uniform **`[256:256]` `[container:member]`** GUID (scale‑free: galaxy:planet … residue:atom); HhtlMode **Located** (Cesium 3D‑octree CRS) vs **Cascade** (self‑speaking ontology path); leaf = familyNode:identity. 3D‑octree HEEL/HIP (`morton3`), the ModalityProjection contract (ViT/X‑ray/US×Doppler `register`+`project` by Guid). 12+4 EdgeBlock removed (superseded by family nodes). | G | CODED | `crates/ogar-fma-skeleton/{guid,morton,projection}.rs` | D‑FMA‑SKELETON, D‑MORTON |
132132
| D‑NODEGUID‑AUDIT | Group‑by‑group audit of the FMA tier `Guid` vs lance‑graph `NodeGuid` (canon rule: wrappers audited against OGAR). **Caught F‑1: lance‑graph `CLASSID_FMA=0x0901` aliases OGAR `patient`** — this session's `0x0A` Anatomy domain resolves it. Also: classid/family/identity width + endianness + EdgeBlock divergences, each with a reconciliation. | G | CODED | `docs/NODEGUID-CANON-AUDIT.md` | D‑GUID‑TIER; lance‑graph `canonical_node.rs` |
133+
| D‑V1‑TAIL‑RETIRED | **MIGRATION MANDATORY (operator, 2026‑07‑04):** the flat `family:u24 ++ identity:u24` V1 tail is **FORBIDDEN for new units.** V3 is the content‑blind `classid(4) + 12B` facet — 12B an axis‑grouped register (`6×(u8:u8)` / `4×(u8:u8:u8)` / `3×(u8:u8:u8:u8)`), the ClassView holds every reading at once (`part_of:is_a` / `X:Y` / `palette256²` / `segment:taxonomy` / typed) and `u8:u8` is **never widened** (u16 = the deprecated V2 flat read; u24 = V1). A flat u24 has no axis → cannot carry a rail. Append‑only: u24 stays read‑only for pre‑flip GUIDs. Producer already V3: `ruff_spo_address::Facet` via `ogar‑from‑ruff`. Regrades D‑NODEGUID‑AUDIT F‑3; pin superseded in `CLAUDE.md` P0. | G | RULING | `CLAUDE.md` P0 (regraded) + `docs/NODEGUID-CANON-AUDIT.md` F‑3 (inverted) + `docs/V3-TRANSPILER-ADR.md` | D‑NODEGUID‑AUDIT; D‑GUID‑TIER; lance‑graph `E‑V3‑FACET‑4‑PLUS‑12` |
133134

134135
### 2.2 Selection & bounds
135136

docs/NODEGUID-CANON-AUDIT.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,26 @@ byte), not the *shape*. **Reconciliation:** make the family:identity split a
7878
ratified, the FMA `Guid` is a constrained projection of the canon, not a
7979
replacement.
8080

81+
> **⊘ REGRADE — MIGRATION MANDATORY (operator, 2026-07-04). F-3 inverts.** The
82+
> framing above — "the u24 tail is the canon; the byte-direct is a constrained
83+
> projection, not a replacement" — is **superseded**. Per the operator ruling and
84+
> `E-V3-FACET-4-PLUS-12` (operator-locked 2026-07-02), the **byte-grouped facet IS
85+
> the canon and the flat `u24 ++ u24` tail is V1-LEGACY, forbidden for new units.**
86+
> V3 is content-blind: `classid(4) + 12-byte payload` as an axis-grouped register —
87+
> `6×(u8:u8)` / `4×(u8:u8:u8)` / `3×(u8:u8:u8:u8)`, the ClassView holds every
88+
> reading at once (`part_of:is_a` / `X:Y` / `palette256²` / `segment:taxonomy` /
89+
> typed) and `u8:u8` is **never widened**. So the "gap is only per-field width
90+
> (u16 vs byte)" reading is wrong twice over: (a) the go-forward width is the
91+
> **byte** (u8:u8 pair), not u16 (u16 is the deprecated V2 flat read); (b) a flat
92+
> u24 has **no axis** and cannot carry a rail — it is not a width variant of the
93+
> facet, it is a different (retired) shape. The class-local carve intuition (F-3
94+
> "make the split a per-classid property") survives and is *exactly right* — but it
95+
> is the **ClassView projecting the content-blind (u8:u8) register per classid**,
96+
> not a u24 width knob. Reconciliation is now MANDATORY, not "until ratified":
97+
> `ogar-from-ruff` already mints the V3 facet (`ruff_spo_address::Facet`);
98+
> `ogar-fma-skeleton::Guid` classid 2→4 (F-2) is the remaining code delta. Canon
99+
> pin regraded in `CLAUDE.md` P0 (dated 2026-07-04, append-only).
100+
81101
### F-4 — `[G]` **endianness: FMA tiers are container-first (big-endian); canon is LE throughout.**
82102

83103
`Guid::classid()` reads `(bytes[0] << 8) | bytes[1]`, so `0x0A03` stores as

0 commit comments

Comments
 (0)