|
| 1 | +## 2026-06-09 — E-IDENTITY-WHITEBOX-1 — structured identity + round-trip converts the substrate from black-box to CI-falsifiable |
| 2 | + |
| 3 | +**Status:** FINDING (Phase A landed: `identity::NodeGuid` composed, 15 tests green) |
| 4 | +**Confidence:** High |
| 5 | + |
| 6 | +**The synthesis:** a structured 128-bit immutable identity (UUIDv8 = the HHTL |
| 7 | +nibble-address formalized + namespaced) PLUS the `roundtrip_eq` guarantee turn the |
| 8 | +substrate from a black box into a CI-falsifiable surface. Two structural witnesses: |
| 9 | +the **bijection** (`entity_type ↔ NiblePath`, proven eineindeutig at build time) |
| 10 | +and **`roundtrip_eq`** (a lossy projection fails CI, not code review). The |
| 11 | +round-trip whitens the PLUMBING (identity / LE byte-contract / member-vs-container) |
| 12 | +— the darkest, most-expensive-bug layer; it does NOT whiten semantics (needs |
| 13 | +ground-truth corpora) or the lossy codec (needs ρ-certification). Those keep their |
| 14 | +own witnesses; the trade is "vigilance over the substrate" → "a test over the substrate". |
| 15 | + |
| 16 | +**Compose, don't re-invent (Agent A sweep):** the 128-bit identity space is empty |
| 17 | +(no committed `u128`/`Uuid`/`[u8;16]`-as-id), but every GUID field already exists as |
| 18 | +a committed scalar — `SchemaPtr.packed` (ns8|entity_type16|kind8) ⊕ `NiblePath` |
| 19 | +prefix ⊕ truncated `StructuralSignature` ⊕ local. `NodeGuid` is their composition. |
| 20 | + |
| 21 | +**Eineindeutigkeit (ratified):** `entity_type:u16` is the canonical exact class |
| 22 | +identity; `NiblePath` is the bijective DERIVED view (a *truncated* prefix can't be |
| 23 | +the identity — deep classes collide past it, `hhtl.rs`). The registry mints the |
| 24 | +pair 1:1; a build-time bijection round-trip proves it; the GUID prefix-consistency |
| 25 | +invariant (`prefix == niblepath_of(entity_type)[..N]`) catches drift. |
| 26 | + |
| 27 | +**Free side-effects:** the structured GUID is also (a) a KV key via the existing |
| 28 | +`EntityKey(&[u8])` (smb-bridge already length-branches it), and (b) a **quadkey** — |
| 29 | +Lance ORDER BY the NiblePath gives subtree range-scans = zone-map-pruned byte |
| 30 | +ranges, no index (ADR-024 "HHTL prefix establishes a frame"). |
| 31 | + |
| 32 | +**Landed:** `lance_graph_contract::identity::NodeGuid` (D-IDENTITY-1 / Phase A) + |
| 33 | +`NiblePath::from_packed`. 599 contract lib tests (+15), clippy `-D` clean, fmt clean. |
| 34 | +Plans: `identity-architecture-exists-vs-needs-v1.md` (exists-vs-needs map), |
| 35 | +`cognitive-write-roundtrip-substrate-v1.md` (the round-trip mechanism). |
| 36 | + |
1 | 37 | ## 2026-06-06 — E-DEINTERLACE-TWO-SCALES — deinterlace is one operation at two scales; no-cross-cycle-lag = byte-scale deinterlace |
2 | 38 |
|
3 | 39 | **Status:** FINDING (source-grounded; `temporal.rs` PR #468 confirms row-scale; byte-scale is a documented gap) |
|
0 commit comments