Skip to content

Commit 9f2f878

Browse files
committed
board: post-merge hygiene for #521 (PR_ARC + LATEST_STATE)
Records the merged #521 (lance-graph-contract C++ codegen target MethodSig + UniCharSet content store) per the Mandatory Board-Hygiene Rule's post-merge step. PR_ARC_INVENTORY prepend (Added/Locked/Deferred/Docs/Confidence) + LATEST_STATE narrative entry + "Recently Shipped PRs" table row. Captures the PROBE-OGAR-ADAPTER-UNICHARSET FINDING: the full transcode pipeline (ruff ruff_cpp_spo harvest -> reassemble -> ruff_cpp_codegen -> these contract types) produces a UniCharSet byte-identical 112/112 to the libtesseract oracle on real eng data, proving the core-first transcode doctrine end-to-end. Pairs with ruff #20. Merge commit 620bd8e. Co-Authored-By: Claude <noreply@anthropic.com> https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1
1 parent e55a8cf commit 9f2f878

2 files changed

Lines changed: 33 additions & 1 deletion

File tree

.claude/board/LATEST_STATE.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
---
1212

1313
> **2026-06-17 — IN PR (branch `claude/odoo-spo-fk-target-deep-reads`)** — Odoo SPO corpus enrichment (odoo-rs `UPSTREAM_WISHLIST` P1 + coupled P0). The corpus `crates/lance-graph/src/graph/spo/odoo_ontology.spo.ndjson` now carries **two new predicate families** (was 7 predicates: `depends_on / emitted_by / has_function / raises / rdf:type / reads_field / traverses_relation`): **`target`** (618) + **`inverse_name`** (102) — the relational comodel/inverse keyed by the relation IRI, ruff#18 sibling-triple shape `(odoo:account_move.line_ids, target, "account.move.line")`; and **+736 deep `reads_field`** (so `reads_field` 2 095 → 2 831) — each `@api.depends('rel.leaf', …)` resolved through the new target map and lifted onto the field's emitting method as a transitive read. Corpus 22 245 → **23 701** triples. New stdlib-only generator `tools/odoo-blueprint-extractor/odoo_blueprint_extractor/spo_enrich.py` (+14 unit tests) reads `/home/user/odoo/addons` (the same source the ORM extractor parses) to build the `(model, field) → (comodel, inverse)` map; additive, deterministic, idempotent. `odoo_ontology.rs` doc + tests updated (count 23 701, histogram incl. new predicates, 2 new enrichment tests); `action_emitter`/`spo` unaffected (function count 3 328 unchanged). **Cross-repo finding (verified, not faked):** the deep reads make the cross-model recompute-ordering edge `account_move_line._compute_amount_residual → account_move._compute_amount` *visible* to `od_ontology::RecomputeDag` (baseline: 0 cross-model compute edges → enriched: 27), delivering the wishlist's P0 ask — but the audit's MISSED-1 is a unidirectional *ordering edge*, NOT a cycle, so odoo-rs's `slice_2_compute_subset_no_cross_model_cycle` no-cycle assertion legitimately still holds (the "circularity" is semantic, not a `reads_field`↔`emitted_by` back-edge). The corpus's original generator (`emit_ontology2.py`/`methods.parquet`) is absent from the tree — only its output is committed; enrichment runs at the correct additive stage over the shipped corpus + present source. See `EPIPHANIES.md` E-ODOO-FK-DEEP-READS.
14-
14+
>
15+
> **2026-06-17 — MERGED #521** (lance-graph-contract: C++ codegen target `MethodSig` + `UniCharSet` content store): **+940/-4 across 8 files, additive to `lance-graph-contract` only** (zero `NodeRow`/`ValueTenant`/`ValueSchema`/stride/`ENVELOPE_LAYOUT_VERSION` impact). The Core-side of the Tesseract C++→Rust transcode. **`codegen_manifest`** — `MethodSig` (the `&'static`-backed, `const`-constructible method-signature type the generated Rust names; the method-axis sibling of `ClassView`'s field projection, distinct because `ClassView::FieldRef` is `String`-backed and can't be `const`) + `ClassMethods` + `methods_for`. **`unicharset`** — `UniCharSet` (deepnsm::Vocabulary-shaped id↔unichar bijection), `.unicharset` parser, `id_to_unichar`/`unichar_to_id`/`dump`, **zero leptonica** (pure text, never touches `Pix`). **PROBE-OGAR-ADAPTER-UNICHARSET → FINDING:** the pipeline (ruff `ruff_cpp_spo` harvest → `reassemble` → `ruff_cpp_codegen` → these types) produces a `UniCharSet` **byte-identical 112/112** to the C++ libtesseract oracle on real `eng` data — the core-first transcode doctrine is now empirically proven end-to-end (doctrine flipped CONJECTURE→FINDING). The sole id-0 diff was the `NULL`→space convention (`unicharset.cpp:882`), fixed + locked by `null_token_maps_to_space` (codex P1 flagged it independently; resolved + thread closed). Pairs with **ruff #20** (harvester + codegen side, merged same day). 644 contract lib green; clippy `-D warnings` + fmt clean. Branch `claude/happy-hamilton-0azlw4`, merge `620bd8e`. **Next honest increment:** wire `UniCharSet` lookups through `classid → ClassView → UnifiedStep` (the `classid → &UniCharSet` resolver), per-leaf one-`diff` parity.
16+
>
1517
> **2026-06-17 — IN PR (branch `claude/bindspace-mailbox-soa-w3-w4a`)** — W3+W4a atomic read/write shim, the first behaviour-touching step of the BindSpace→MailboxSoA migration. New `cognitive-shader-driver::backing` module (`pub(crate)`): `BackingStore<'a>` (read) + `BackingStoreWrite<'a>` (write) — an enum with a `Singleton(&BindSpace)` arm (live default) and a `#[cfg(feature = "mailbox-thoughtspace")] Mailbox(&MailboxSoA<1024>)` arm. New Cargo feature **`mailbox-thoughtspace`** — **default-OFF, NOT in `lab`**; production stays singleton-read+write until W7. `driver.run()` keeps ONE body: all six dispatch reads (meta_prefilter / qualia17d / content_row / edge / entity_type / len) re-pointed through a `self.backing()` selector (`const DEFAULT_MAILBOX: MailboxId = 0`, `debug_assert!(mailboxes.len() <= 1)`, singleton fallback when no mailbox registered); `ontology()` stays on the singleton (re-home is W4b). Gates: **W2 differential** (`tests/w2_differential.rs`, 4 tests) asserts the WHOLE `ShaderCrystal` bit-identical (`f32::to_bits()`) across both arms incl. a non-zero-window case + non-vacuity; firewall CI lint (`tests/firewall.rs`) bars the two `CausalEdge64` twins (`ndarray::hpc::causal_diff` / `thinking_engine::layered`) from `src/`; field-isolation matrix + cycle-drop footprint (~6 KB/row vs ~71.6 KB) in `mailbox_soa.rs`. `unbind_busdto` C5 downgrade: cycle-plane index recovery feature-gated OUT under `mailbox-thoughtspace` (cycle plane never migrated — D-DIST-5), headline survives via `qualia[9]`; singleton build keeps bit-exact recovery. Tests: default **97 lib + 2 firewall + 2 e2e**; feature-on **98 lib + 2 firewall + 2 e2e + 4 w2**; clippy `--all-targets` (both cfgs) + fmt clean on touched files. **Pre-existing P0 surfaced (NOT introduced, NOT fixed here):** the `with-engine` build does not compile on `main`/HEAD (`engine_bridge.rs:259` uses `QUALIA_DIMS` without importing it); the busdto round-trip tests have never run, and (separately) the D-CSV-5b i4-qualia cutover breaks the `codebook_index` round-trip (stored in i4 `qualia[9]`, ±7 range, cannot hold a u16). Left untouched to keep scope to W3+W4a — flagged for operator. Plan: `.claude/plans/bindspace-mailbox-soa-w3-w4a-impl-v1.md`.
1618
>
1719
> **2026-06-16 — MERGED #512** (perturbation-sim review fixes + **core-first transcode doctrine**): +591/-5 across 11 files. **Code fixes (review of #511):** `examples/calibrate.rs` divide-by-zero guard on degenerate grid; `src/hhtl.rs::basin_lambda2` `assert_eq!(keys.len(), grid.n, …)` precondition (silent corruption→loud panic); `TECH_DEBT.md` MD018 reflow. **Doctrine (the structural delivery):** new mandatory-read `core-first-transcode-doctrine.md` (218 LOC) + 3 new agent cards (`core-first-architect`, `core-gap-auditor`, `adapter-shaper`) + `BOOT.md`/`README.md` wires + EPIPHANIES entry + CLAUDE.md (+21 LOC, doctrine wire-up — NEW content unread by this session). Likely directly aligned with the ontology-first stance the operator locked on odoo-rs. Branch `claude/happy-hamilton-0azlw4`, merge `1e23c410`. 75 lib tests + clippy + fmt clean.
@@ -50,6 +52,7 @@
5052

5153
| PR | Merged | Title | What it added |
5254
|---|---|---|---|
55+
| **#521** | 2026-06-17 | lance-graph-contract: C++ codegen target (`MethodSig`) + `UniCharSet` content store | **+940/-4 across 8 files, additive to `lance-graph-contract` only.** The Core-side of the Tesseract C++→Rust transcode. **`codegen_manifest`** `MethodSig` (`&'static`/`const`-constructible method-signature type the generated Rust names; method-axis sibling of `ClassView`'s field projection) + `ClassMethods` + `methods_for`. **`unicharset`** `UniCharSet` (deepnsm::Vocabulary-shaped id↔unichar bijection) + `.unicharset` parser + `dump()` — **zero leptonica** (pure text). **PROBE-OGAR-ADAPTER-UNICHARSET → FINDING:** the full pipeline produces a `UniCharSet` **byte-identical 112/112** to the libtesseract oracle on real `eng` data; core-first doctrine proven end-to-end. `NULL`→space (`unicharset.cpp:882`) was the sole id-0 diff, locked by `null_token_maps_to_space` (codex P1 independently flagged + resolved). Pairs with **ruff #20**. 644 contract lib green; clippy `-D warnings` + fmt clean. Branch `claude/happy-hamilton-0azlw4`, merge `620bd8e`. |
5356
| **#512** | 2026-06-16 | perturbation-sim review fixes + **core-first transcode doctrine** + 3 new agent cards | **+591/-5 across 11 files**. Fixes from #511 review: `examples/calibrate.rs` divide-by-zero guard on degenerate grid; `src/hhtl.rs::basin_lambda2` `assert_eq!(keys.len(), grid.n, …)` precondition (silent-corruption → loud panic); `TECH_DEBT.md` MD018 reflow. **The structural delivery:** new mandatory-read `core-first-transcode-doctrine.md` (218 LOC) + 3 specialist agents (`core-first-architect`, `core-gap-auditor`, `adapter-shaper`) + EPIPHANIES entry + CLAUDE.md (+21 LOC) wire-up. Likely aligned with the ontology-first / codegen-as-cut-tail doctrine the operator just locked on odoo-rs. 75 lib tests + clippy `-D warnings` + fmt clean. Branch `claude/happy-hamilton-0azlw4`, merge `1e23c410`. |
5457
| **#513** | 2026-06-16 | perturbation-sim: inertia §0 promotion gate + CAKES/CHAODA + witness standing-wave + H ingest | **+1009/-2 across 10 files**, disjoint from #512 by design. **§0 promotion gate** for `inertia_buffer`: `GuardrailVerdict::RatifiedReuse` — takes `ResidueEdge INERTIA_SLOT = 5`, reuses existing tenant, invents no axis → **passes by reuse, not waiver**. **Probe 1 CAKES + CHAODA-lite** over HHTL basins (`CHAODA_FLAG=0.75` mirrors ndarray::clam; example flags brittle block 1.1.0 score 1.000). **Probe 2 witness arc as standing wave** — Parseval proves `particle == wave` to 0.00e0; `witness_from_spectrum` is the O(N)-per-arc read-many amortization. **Probe 3** per-bus inertia (H) ingest path. Does NOT touch `canonical_node`. Branch `claude/perturbation-sim-inertia-clam`, merge `8a3e335b`. |
5558
| **#511** | 2026-06-16 | perturbation-sim: substrate calibration (study as ground truth) + calibrated SoA member spec | **+886/-0 additive across 9 files** — `examples/calibrate.rs` (new, 318 LOC, ICC/Spearman/Pearson/Cronbach battery), `src/columns.rs` (new, 177 LOC, **spec only**), `src/hhtl.rs` (new, 175 LOC), `examples/hhtl_grid.rs` (new, 81 LOC), `CLAM_CHAODA_FRAMING.md` (new, 75 LOC). Calibrates the SoA value tenants against perturbation-sim's deterministic study as ground truth: **all 5 contingency factors certify by VALUE at 2-bit linear** (ICC ≥ 0.96), the §10 "statistics survive the encoding" claim **CONFIRMED**; α preserved within Δ ≤ 0.02 at ≥4-bit; read ≥6-bit for cross-axis orthogonality. The **one additive member** named: **`inertia_buffer`** — orthogonal to topology per PR #509's `Spearman(λ₂, buffer) ≈ 0`, spec only, promotion gated by §0 guardrail. Self-correction: two prior guesses on `d_lambda2`'s ICC=0 (heavy-tail / near-constant) **retracted** — it was a variance-guard underflow at ~1e-7. Significance per Jirak `n^(p/2−1)`. Does **NOT** touch `canonical_node` (operator-locked). Branch `claude/perturbation-sim-calibrate-soa`, merge commit `c3dddfc9`. |

.claude/board/PR_ARC_INVENTORY.md

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

38+
## #521 lance-graph-contract: C++ codegen target (`MethodSig`) + `UniCharSet` content store
39+
40+
**Status:** MERGED 2026-06-17 20:53 UTC (merge commit `620bd8e`), branch `claude/happy-hamilton-0azlw4`. **+940/-4 across 8 files, 9 commits.** The Core-side of the Tesseract C++→Rust transcode — the contract types ruff's `ruff_cpp_codegen` targets, plus the byte-parity probe's Rust side. **Additive to `lance-graph-contract` only** (container-architect ADDITIVE-CONFIRMED: zero `NodeRow`/`ValueTenant`/`ValueSchema`/stride/`ENVELOPE_LAYOUT_VERSION` impact). Pairs with **ruff #20** (the harvester + codegen that produces what these types consume; merged 2026-06-17 19:38 into ruff `main`).
41+
42+
**Added (code):**
43+
- **`codegen_manifest` module**`MethodSig`: the `&'static`-backed, **`const`-constructible** method-signature type the generated Rust names (the method-axis sibling of `ClassView`'s field projection). `ClassMethods` + `methods_for(registry, classid)`: the registry entry + zero-fallback lookup (classid bound OGAR-side; the data is generated downstream, no runtime registry stored in the contract).
44+
- **`unicharset` module**`UniCharSet` (`deepnsm::Vocabulary`-shaped: `reverse: Vec<String>` id→unichar + `lookup: HashMap<String,u32>` unichar→id), `load_from_str`/`load_from_file`/`id_to_unichar`/`unichar_to_id`/`size`/`dump`, typed `UniCharSetError`. The Rust side of `PROBE-OGAR-ADAPTER-UNICHARSET`: pure text parsing, **zero leptonica** (the unicharset path never touches `Pix`).
45+
- **`examples/unicharset_dump.rs`** — renders the oracle-shape `"<id>\t<unichar>\n"` table so byte-parity is a single `diff`.
46+
47+
**Locked:**
48+
- **PROBE-OGAR-ADAPTER-UNICHARSET → FINDING.** The core-first transcode doctrine is now **empirically proven end-to-end**: a real Tesseract adapter produced through the pipeline (`ruff_cpp_spo` harvest → `reassemble``ruff_cpp_codegen` → these contract types) is **byte-identical (112/112)** to the C++ libtesseract `UNICHARSET::id_to_unichar` oracle on real trained `eng` data. Doctrine flipped CONJECTURE→FINDING in `core-first-transcode-doctrine.md`.
49+
- **`NULL`→space convention** (`unicharset.cpp:882`): the loader special-cases the file token `"NULL"` to the runtime space unichar `" "`. This was the sole id-0 diff the probe surfaced (was 111/112). Locked by the `null_token_maps_to_space` unit test. (codex P1 on #521 flagged the same edge case independently; resolved + thread closed.)
50+
- **`MethodSig` must be `&'static`/`const`-constructible** — because `ClassView::FieldRef` is `String`-backed and cannot appear in a `const`, the method axis needed a distinct `&'static`-backed type. That is why this is a new type, not a `ClassView` extension.
51+
52+
**Deferred:**
53+
- Wiring the proven `UniCharSet` lookups through `classid → ClassView → UnifiedStep` (the `classid → &UniCharSet` `LazyLock` resolver) — the honest next increment.
54+
- Per-leaf-method one-`diff` parity checks as each future Tesseract method body is transcoded.
55+
- Fragment / `CleanupString` unichar normalization (a separate, later adapter leaf; this PR is the `old_style_included_ == true` plain-table scope).
56+
57+
**Docs:**
58+
- `.claude/plans/transcode-extend-core-probe-v1.md` — full 5-consolidate + 3-brutal council record + the C-FIRST D → emitter → EXTEND-CORE arc + the BYTE-PARITY ACHIEVED section.
59+
- `.claude/board/EPIPHANIES.md``E-CPP-PARITY-1` (the byte-parity FINDING).
60+
- `.claude/knowledge/core-first-transcode-doctrine.md` — falsifier gate flipped CONJECTURE→FINDING (RAN GREEN 2026-06-17, 112/112).
61+
- LATEST_STATE Contract Inventory: `D-CPP-CODEGEN-1` + `D-UNICHARSET-1` (in-PR).
62+
63+
**Confidence (2026-06-17):** working. 644 contract lib tests green; clippy `-D warnings` + fmt clean. Byte-parity 112/112 re-verified post-rebase (onto main after #522 odoo-extractor). codex P1 (NULL→space) resolved + thread closed; CodeRabbit summary clean.
64+
65+
---
66+
3867
## #512 perturbation-sim: degenerate-grid + key-cardinality guards + core-first-transcode doctrine (review #511 + #513)
3968

4069
**Status:** MERGED 2026-06-16 20:33 UTC (merge commit `1e23c410`), branch `claude/happy-hamilton-0azlw4`. **+591/-5 across 11 files** — addresses the open review findings from #511 (which merged before they resolved) AND introduces the **core-first-transcode** doctrine + 3 new agent cards.

0 commit comments

Comments
 (0)