Skip to content

Commit c8e1ec4

Browse files
authored
Merge pull request #627 from AdaWorldAPI/claude/v3-substrate-migration-review-o0yoxv
Classid canon:custom flip TRIGGERED — migration plan v1, operator ruling recorded, q2 gate waived, osint issues resolved
2 parents 5aaee33 + 7a796d5 commit c8e1ec4

7 files changed

Lines changed: 208 additions & 7 deletions

File tree

.claude/board/EPIPHANIES.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
1+
## 2026-07-02 — E-CLASSID-CANON-HIGH-TRIGGERED — the operator pulled the flip trigger: canon (domain:appid) moves to the HIGH half, `0x1000` was a temporary reminder, OSINT low byte = appid space, q2 gate waived
2+
3+
**Status:** DOCTRINE (operator ruling, verbatim anchors in the plan §0).
4+
5+
**Four rulings in one message arc (2026-07-02):**
6+
1. **OSINT semantics:** "OSINT Person was a hallucination." `0x07` = OSINT
7+
domain; low byte applied **domain-wise as APPID** (`00` = the domain
8+
itself; `01` = **q2, our consumer**). OSINT contributes ZERO vocabulary
9+
rows — OGAR PR #146 removed both #145 mints (count 67→65; the COUNT_FUSE
10+
balances with zero mirror changes; `ISS-OSINT-SYSTEM-ROOT-SLOT-VIOLATION`
11+
dissolves — sharper than either of its recorded Options A/B). FMA anatomy
12+
= own domain (`0x0A`, separate from Health `0x09`) under q2; CPIC = own
13+
Genetics domain (`0x0E`) under q2 (⇒ its q2 class normalizes `:00`→`:01`).
14+
2. **The marker was temporary:** `0x1000` was "just a temporary V3 substrate
15+
marker as a hard reminder for V3 substrate migration" — a sticky note,
16+
not a format bit. Retirement is a planned operator checkpoint (plan §4 P4).
17+
3. **The flip is TRIGGERED:** "now is the right time for the migration."
18+
Target stored form `0x0701_1000` — canon (`domain:appid`) HIGH, custom
19+
(marker/render) LOW; human-readable `0x07:01::1000`. This IS the
20+
`soa-value-tenant-migration-v2` §2.3 atomic Canon:Custom flip, now ACTIVE
21+
as `.claude/plans/classid-canon-custom-flip-v1.md` (one flippable
22+
compose/split definition, `flip(flip(x))==x` probed, mint-forward with an
23+
I-LEGACY version boundary — never a blanket reinterpretation of legacy
24+
classids). `E-CLASSID-HUMANREADABLE-REORDER-DEFERRED` is hereby
25+
superseded-by-trigger (entry preserved, per append-only).
26+
4. **q2 push gate WAIVED:** "it was a temporary precaution to not break the
27+
cockpit while working on so many different domains — you can unarm that."
28+
D-VCW-3 (P7 render probe), D-VCW-5 (cascade3 nibble falsifier), and the
29+
q2 phases of the flip (P3) are unblocked.
30+
31+
---
32+
133
## 2026-07-01 — E-RUNG-LADDER-IS-DISPATCH-POLICY-OVER-CERTIFIED-MASKS — rung elevation needs zero new math; and there is ONE ladder with TWO signal sources (gate streaks + felt-parse delta)
234

335
**Status:** FINDING (shipped: `RungLevel::{from_u8, elevate, de_elevate,

.claude/board/INTEGRATION_PLANS.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2026-07-02 — classid-canon-custom-flip (TRIGGERED — the §2.3 atomic flip is live)
2+
3+
Plan: `.claude/plans/classid-canon-custom-flip-v1.md`. **Operator pulled the trigger** ("now is the right time for the migration — document it accordingly"): canon (`domain:appid`) moves to the classid's HIGH u16, custom (the temporary `0x1000` V3 marker, later the render/dynamic-classview space) to the LOW — stored `0x0701_1000`, human-readable `0x07:01::1000`. Grounded in the same ruling: OSINT low byte = APPID space domain-wise (q2=`0x01`; zero vocabulary rows — OGAR PR #146), FMA/CPIC own domains under q2 (CPIC normalizes `:00`→`:01`), q2 push gate WAIVED. Mechanism: ONE flippable `compose_classid/split_classid/CLASSID_CANON_HIGH` in the contract (per `E-CLASSID-SPLIT-ORDER-IS-A-FLIP`), `flip(flip(x))==x` probed, **mint-forward with an I-LEGACY version boundary** (legacy `0x0000_XXXX` classids never blanket-reinterpreted). Phases: P0 route-through (zero behavior) → P1 flip+coexist → P2 OGAR#95 hi-u16 app-prefix reconciliation (operator checkpoint) → P3 q2 re-mints (dissolves `ISS-Q2-CPIC-MIRROR…`) → P4 `0x1000` retirement (operator checkpoint). Supersedes-by-trigger `E-CLASSID-HUMANREADABLE-REORDER-DEFERRED`; executes `soa-value-tenant-migration-v2` §2.3. ACTIVE.
4+
15
## 2026-07-01 — v3-convergence-wiring (wire, don't invent — every layer already contains its own solution)
26

37
Plan: `.claude/plans/v3-convergence-wiring-v1.md`. **Operator all-in ("I'm all in for your ideas — document and PR so other sessions converge"); model split Sonnet-grindwork/Fable-decisions.** The organizing finding (`E-V3-TENANTS-ALREADY-EXIST-WIRE-DONT-INVENT`): the V3 substrate's gaps are unwired seams, not missing machinery — every deliverable is a probe or a wiring of EXISTING types, §0 anti-invention throughout. **Seam list:** D1a `RungLevel::{from_u8,elevate,de_elevate,pearl_level,causal_mask_bits}` + `RungElevator` (zero-dep "elevates on sustained BLOCK" as a pure policy over `GateDecision` + the P2/P3-certified mask algebra; converged with `escalation::rung_delta` via `apply_delta` — one ladder, two signal sources: gate streaks = System-2, felt-parse = System-1) — SHIPPED; D1b driver wiring (replace `ctx.rung = 1` proxy, dedup wire/grpc u8→rung matches) — Sonnet in flight; D2 P6 wave-convergence probe (markov_soa's injected distance = the SAME certified 256×256 palette read as P1–P3; the table is the join object) — SHIPPED (2 tests, 6/6 module green); D3 P7 render probe spec (ClassView bitmask → askama; rendered fields == masked tenants; q2-side, push-gated, spec ready §3); D4 one-row registry (codebook row seeds `{tail, value_schema, edge_codec, bitmask, template}`; read-mode parity fuse sibling of COUNT_FUSE; Phase B gated on operator + osint decision); D5 nibble-hierarchy falsifier (FNV `cascade3` bytes have no nibble ancestry → HHTL on bake mints is tier-granular; `ISS-Q2-CASCADE3-NIBBLE-ANCESTRY`); D6 negative-existence-claims worker rule (knowledge doc Rule 7) — SHIPPED; D7 rig/rs-graph-llm FailureTicket loop — deferred frontier (first place determinism ends). **Doctrine (no code):** the two SoA worlds stay two — Lance columnar I/O is the reconciler; consumers write against per-row accessors; column borrows are the owner's privilege. ACTIVE.

.claude/board/ISSUES.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## 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
44

5-
**Status:** OPEN (falsifier specified, not yet run — q2 is push-gated). Owner:
5+
**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:
66
q2 `cpic/src/lib.rs::cascade3` (+ any bake reusing it) vs the OGAR canon's
77
256=4⁴ hierarchical-codebook condition. Plan: `v3-convergence-wiring-v1.md` §5.
88

@@ -26,8 +26,7 @@ assume sub-byte ancestry on these mints until this runs.
2626

2727
## 2026-07-01 — ISS-Q2-CPIC-MIRROR-DIVERGES-FROM-CPIC-V3-REGISTRY — q2's local `cpic::NodeGuid` mirror is V1-layout-parity-true but diverges from the registered CPIC-V3 read-mode on BOTH domain and tail shape
2828

29-
**Status:** OPEN (record-only; resolve WITH the operator — q2 is push-gated and
30-
cross-repo blockers are never silently fixed). Owner: q2 `cpic/src/lib.rs` +
29+
**Status:** RESOLUTION RULED 2026-07-02 (execution queued as flip P3 / D-CCF-3) — the operator ruling ("Same for cpic also under q2, which has a different domain for separation") + the triggered canon:custom flip settle this as shape (a) below, with the target classid updated by the flip: q2's CPIC class = Genetics:q2 = `0x0E:01::…` (post-flip stored `0x0E01_1000`; the pre-flip root `0x1000_0E00` normalizes `:00``:01`). q2 push gate WAIVED. cpic re-mints by PULLING the contract (`mint_for(classid_read_mode(…).tail_variant, …)`), retiring the local mirror + the `0x0C` domain. See `classid-canon-custom-flip-v1.md` §2/§4. Owner: q2 `cpic/src/lib.rs` +
3130
`lance-graph-contract::canonical_node` (CPIC-V3 registry). Surfaced 2026-07-01
3231
by a verify-the-mirror read after the V3 tenant-carve certification.
3332

@@ -80,7 +79,7 @@ declared registry-exempt (bake-only) and its parity comment is scoped to
8079

8180
## 2026-07-01 — ISS-OSINT-SYSTEM-ROOT-SLOT-VIOLATION — OGAR shipped `osint_system` at the reserved `0x0700` root slot; the lance-graph mirror canon forbids it (`CC==0x00` = domain root, reserved) — the parallel-mirror is BLOCKED on a remap decision
8281

83-
**Status:** OPEN · **BLOCKS `ISS-OGAR-OSINT-MIRROR-PENDING`.** Owner: OGAR `ogar-vocab` (merged, needs follow-up) + `lance-graph-contract::ogar_codebook` mirror + q2 `osint_classview`. Surfaced 2026-07-01 when the merged OGAR #145 + lance-graph #624 met and I ran `cargo test -p lance-graph-contract`.
82+
**Status:** RESOLVED 2026-07-02 (operator ruling, executed in OGAR PR #146) — and the resolution is SHARPER than either recorded option: "OSINT Person was a hallucination"; within the OSINT domain the low byte is APPID space applied domain-wise (`00` = the domain itself, `01` = q2 the consumer), so OSINT contributes **zero vocabulary rows**. OGAR #146 removed BOTH #145 mints (`osint_system@0x0700` AND `osint_person@0x0701`); count 67 → 65 == the mirror's 65 — the COUNT_FUSE balances with ZERO mirror-side changes, and the zero-slot invariant is untouched. Options A and B below are preserved as history; neither was taken (B came closest — its addendum's two-id-spaces reading is confirmed, but even the `0x0701` "concept" was a mislabel on q2's appid slot). See `E-CLASSID-CANON-HIGH-TRIGGERED` + `.claude/plans/classid-canon-custom-flip-v1.md` §0 for the full ruling (which also triggers the canon:custom flip).
8483

8584
**The violation.** The shared codebook canon (documented in `ogar_codebook.rs` module header: *"`CC == 0x00` = the domain root, reserved"*) requires every concept id `0xDDCC` to have `CC ≥ 0x01`; `0x__00` is the domain-root/default, NOT a concrete concept. OGAR main ships **`("osint_system", 0x0700)`**`CC == 0x00`, the reserved root. `("osint_person", 0x0701)` is valid (`CC==01`, operator-frozen). The lance-graph mirror enforces the canon via the workspace-member test `codebook_has_no_duplicate_ids_or_zero_concept_slot` (`assert_ne!(id & 0x00FF, 0x00)`), so **mirroring `0x0700` fails lance-graph's own default CI** (748 pass, 1 fail). The `COUNT_FUSE` (in the *excluded* `lance-graph-ogar`) is a separate, downstream break; this one is in-tree.
8685

@@ -109,7 +108,7 @@ Option B resolves it without deleting the idea or moving any id.
109108

110109
## 2026-07-01 — ISS-OGAR-OSINT-MIRROR-PENDING — OGAR #145's OSINT mint (+2 to `class_ids::ALL`) breaks the contract-mirror `COUNT_FUSE` on merge; the paired lance-graph mirror rows must land in the same arc
111110

112-
**Status:** OPEN (tracked) · **Resolution path RULED by operator 2026-07-01: keep the fuse (it IS the dependency contract enforcing OGAR↔lance-graph parallel movement); do NOT pin to a rev — "option 1" is REJECTED. Land the 2 mirror rows + `domains_agree` arm in parallel with OGAR #145 (option 2 / coordinated merge; brief transient red is acceptable — "the fuse is okay for now"). See `E-OGAR-LANCEGRAPH-MOVE-IN-PARALLEL`.** · Owner: OGAR `ogar-vocab` (PR #145) + `lance-graph-contract::ogar_codebook` mirror + `lance-graph-ogar::parity::domains_agree`. Surfaced 2026-07-01 while self-reviewing PR #624 / #145. Same cross-repo-arc shape as `ISS-OGAR-AUTH-MIRROR-DRIFT` (which took medcare CI red) and `ISS-OGAR-GENETICS-MIRROR-PENDING`; cited by `E-CODEBOOK-MINT-IS-A-CROSS-REPO-ARC`.
111+
**Status:** RESOLVED 2026-07-02 — dissolved by the same operator ruling as `ISS-OSINT-SYSTEM-ROOT-SLOT-VIOLATION`: OGAR PR #146 removes both #145 OSINT mints (67 → 65), so the fuse balances with NO mirror rows to land; the "2 mirror rows in parallel" path below is moot (preserved as history). The fuse itself stays, per the earlier ruling ("keep the fuse — it IS the dependency contract"). · Original: **Resolution path RULED by operator 2026-07-01: keep the fuse (it IS the dependency contract enforcing OGAR↔lance-graph parallel movement); do NOT pin to a rev — "option 1" is REJECTED. Land the 2 mirror rows + `domains_agree` arm in parallel with OGAR #145 (option 2 / coordinated merge; brief transient red is acceptable — "the fuse is okay for now"). See `E-OGAR-LANCEGRAPH-MOVE-IN-PARALLEL`.** · Owner: OGAR `ogar-vocab` (PR #145) + `lance-graph-contract::ogar_codebook` mirror + `lance-graph-ogar::parity::domains_agree`. Surfaced 2026-07-01 while self-reviewing PR #624 / #145. Same cross-repo-arc shape as `ISS-OGAR-AUTH-MIRROR-DRIFT` (which took medcare CI red) and `ISS-OGAR-GENETICS-MIRROR-PENDING`; cited by `E-CODEBOOK-MINT-IS-A-CROSS-REPO-ARC`.
113112

114113
**READY PATCH (apply to lance-graph the moment OGAR #145 is on OGAR main; NOT to #624 while OGAR main is still 65 — that breaks #624's own fuse):** in `crates/lance-graph-contract/src/ogar_codebook.rs` add the two rows `("osint_system", 0x0700), ("osint_person", 0x0701)` to `mirror::CODEBOOK` (65 → 67); add the `(O::Osint, C::Osint)` arm to `lance-graph-ogar::parity::domains_agree` (the `ConceptDomain::Osint` enum + `0x07 => Osint` route already exist). Then `mirror::CODEBOOK.len() == ogar_vocab::class_ids::ALL.len()` (67 == 67) restored.
115114

.claude/board/LATEST_STATE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ Membrane consumers can now pull BOTH halves of a render `classid` BBB-safely fro
100100

101101
| PR | Merged | Title | What it added |
102102
|---|---|---|---|
103+
| **#626** | 2026-07-02 | V3 convergence wiring: tenant-carve certification, RungElevator, P6 wave probe, seam-list plan | "Wire, don't invent": `RungLevel::{from_u8,elevate,de_elevate,pearl_level,causal_mask_bits}` + `RungElevator` (sustained-BLOCK policy over P2/P3-certified masks; converged with `escalation::rung_delta` via `apply_delta` — one ladder, two signal sources) wired through the driver (persistent elevator, `ctx.rung=1` proxy retired, grpc rung saturates-never-wraps per codex P2); BOTH V3 tenant carves matrix-certified (Cognitive + Compressed); P6 probe (wave dist == certified palette read, markov_soa verified); `[patch.crates-io] ndarray` → local sibling path (fetch deadlock gone; first in-sandbox core build, 925/925). Plan `v3-convergence-wiring-v1.md`; worker Rule 7. Branch `claude/v3-substrate-migration-review-o0yoxv`, merge `5aaee33`. |
103104
| **#542** | 2026-06-18 | E-OGAR-IS-FOUNDRY capstone + 5+3 council + the key→row baton | Foundry/Gotham = "write the OGAR class schema + inheritance"; everything else is generic machinery over it (ontology=`classid→ClassView`+inheritance, AR=DO/THINK, pipelines=`compute_dag`, apps=Jinja-over-classes, query=Cypher⇄SurrealQL one IR). Added `MailboxSoaView::row_for_local_key -> Option<usize>` (default `None`, deferred-binding — the key→row baton for a future `Backend::MailboxSoa` router). Epiphanies `E-OGAR-IS-FOUNDRY`/`E-CYPHER-IS-THE-KANBAN-AST`/`E-GUID-IS-THE-GRAPH`; plan `cypher-kanban-ast-unification-v1`. Council corrections: `from_guid_prefix` is on `NiblePath` not `NodeGuid`; "odoo proof" = CONJECTURE; `ogar-adapter-surrealql` not a crate. Branch `claude/q2-substrate-grounding`, merge `faca377f`. |
104105
| **#540** | 2026-06-18 | `lite-unified` additive default-OFF coexistence feature gate | **+35/-5, 2 files.** `lite-unified = []` in `crates/lance-graph/Cargo.toml` (empty until SurrealQL-on-lance lowering lands). **datafusion stays DEFAULT — NOT deprecated, NOT made optional.** Process, not switch; promoted per query-shape once OQ-LU-2a is green. Zero behavior change at default features. Branch `claude/lite-unified-gate`, merge `ef7e97ef`. |
105106
| **#539** | 2026-06-18 | particle/wave click → `ClassView::compute_dag` (the one Core gap) + electricity-cascade join | **+570, 6 files, additive to `lance-graph-contract` only.** `class_view::{ComputeEdge, compute_dag_is_acyclic, compute_dag_topo_order}` + `ClassView::compute_dag` default (zero-fallback). `compute_dag_topo_order -> Option<Vec<u8>>` = the recompute ORDER (Kahn; `None` on cycle; leaves excluded). 4+1 epiphanies (`E-OGAR-ROUTER-ENCODER` = router+encoder, physics-duality stripped; `E-EXCEL`, `E-CHESS` = NNUE-proven shape, `E-PERTURBATION` = the cascade IS compute_dag, Weyl bound certifies incrementality; folded `E-AR-DO-WIRING`). Doc-join `crates/perturbation-sim/COMPUTE_DAG_MAPPING.md` (perturbation-sim stays zero-dep). **⚠ tracked: `ClassView::value_schema` default = `ValueSchema::Full` is a TEMPORARY POC — revert to `Bootstrap` + its test when the consumer-transcode phase ends (type-level default stays `Bootstrap`).** 13/13 class_view, clippy/fmt clean. Branch `claude/particle-wave-click-epiphany`, merge `b0255499`. |

.claude/board/PR_ARC_INVENTORY.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,24 @@
3535
3636
---
3737

38+
## #626 lance-graph: V3 convergence wiring — tenant-carve certification, RungElevator, P6 wave probe, seam-list plan
39+
40+
**Status:** MERGED 2026-07-02 (merge commit `5aaee33`), branch `claude/v3-substrate-migration-review-o0yoxv`. The "wire, don't invent" arc: every deliverable a probe or a wiring of EXISTING types (`E-V3-TENANTS-ALREADY-EXIST-WIRE-DONT-INVENT`); operator all-in, Sonnet-grindwork/Fable-decisions model split.
41+
42+
**Added:** contract — `RungLevel::{from_u8, elevate, de_elevate, pearl_level, causal_mask_bits}` + `RungElevator{new, on_gate, apply_delta, causal_mask_bits}` (zero-dep sustained-BLOCK policy, converged with `escalation::rung_delta` — one ladder, two signal sources) + the two V3 tenant-carve field-isolation matrices (`osint_v3_cognitive…` / `fma_cpic_v3_compressed…`, shared `assert_value_lane_isolation`); driver — persistent `RwLock<RungElevator>` on `ShaderDriver` (base-change reset, gate fed post-decision), `materialize_provenance(…, rung)` retires the `ctx.rung = 1` proxy, `rung_from_wire_u32` grpc saturation (codex P2) + wire/grpc `from_u8` dedup + lab-feature compile repair (Pillar-7 initializer fields, `ContextChain::new()`); core — P6 `p6_palette_join` tests (wave dist == certified palette read), `markov_soa` STATUS verified; build — `[patch.crates-io] ndarray` git-URL → local sibling path (burn submodule out of repo scope; patch was `[[patch.unused]]` either way). Plan `.claude/plans/v3-convergence-wiring-v1.md` + knowledge worker Rule 7 (negative-existence claims need exhaustive-search declaration).
43+
44+
**Locked:** rung→Pearl mapping (0–2 observe L1, 3–5 intervene L2 → `PO=0b011` P3-certified, 6–9 counterfactual L3 → `SPO=0b111` P3-certified; L1→`O=0b001` labeled convention pending probe; `Counterfactual = 6` IS the boundary); elevator homeostasis (sustained BLOCK up, sustained FLOW down to dispatched base, HOLD resets streaks; threshold 2 hand-tuned, disclosed); two-SoA-worlds doctrine (Lance columnar I/O is the reconciler; consumers write against per-row accessors; `&[T]` borrows are the owner's privilege); grpc wire rung saturates-never-wraps; board files are append-only ledgers (CodeRabbit learning recorded org-side).
45+
46+
**Deferred:** D-VCW-3 P7 render probe + D-VCW-5 cascade3 nibble falsifier (q2 push-gated, specs ready); D-VCW-4 one-row registry Phase B (OGAR, operator-gated); D-VCW-7 rig/rs-graph-llm FailureTicket loop; osint `0x0700` reconciliation (Options A/B + two-id-spaces addendum strengthening B — operator's); classid human-readable reorder (DEFERRED-by-design).
47+
48+
**Docs/board:** EPIPHANIES `E-V3-TENANTS-ALREADY-EXIST-WIRE-DONT-INVENT` + `E-RUNG-LADDER-IS-DISPATCH-POLICY-OVER-CERTIFIED-MASKS`; ISSUES `ISS-Q2-CPIC-MIRROR-DIVERGES-FROM-CPIC-V3-REGISTRY` (+ dated truncated-grep correction) + `ISS-Q2-CASCADE3-NIBBLE-ANCESTRY`; TECH_DEBT `TD-DEPRECATED-ACCESSORS-BLOCK-DEP-CLIPPY`; STATUS_BOARD D-VCW rows; INTEGRATION_PLANS prepend; AGENT_LOG ×3.
49+
50+
**Confidence (2026-07-02):** HIGH — contract 763 (v2+v3 features)/755 default, core 925 (arigraph 124, markov_soa 6), driver 100 default/186 lab-feature, planner 204; fmt clean; codex P2 fixed+tested; CodeRabbit 5/5 pre-merge, 1 finding fixed + 1 withdrawn (append-only-ledger learning recorded). First session where lance-graph CORE builds+tests in-sandbox (crates.io noProxy + local ndarray path patch + protoc).
51+
52+
**Cross-ref:** plan `v3-convergence-wiring-v1.md`; #624 (P1–P5 probe arc this extends); #496/#500 (tenant-lane layout + no-new-variant guardrail); #618 (V3 identity classes); OGAR #128 (envelope parser, the ReadMode third axis).
53+
54+
---
55+
3856
## #592 lance-graph: `contract::ogar_codebook` APP-prefix (hi-u16) mirror — closes ISS-CONTRACT-APP-PREFIX-MIRROR
3957

4058
**Status:** MERGED 2026-06-22 (merge commit `48794eaf`), branch `claude/contract-app-prefix-mirror`. Closes the Core gap the #591 consumer spellbook surfaced: `contract::ogar_codebook` mirrored the lo-u16 concept pull but not OGAR#97's hi-u16 render composition, so membrane consumers had to hand-stamp `0x000N`.

0 commit comments

Comments
 (0)