perturbation-sim: substrate calibration (study as ground truth) + calibrated SoA member spec#511
Conversation
…er spec Uses the deterministic study as ground truth to certify the SoA value tenants with the certification-officer battery (ICC / Spearman / Cronbach alpha), and emits the additive member design the substrate needs. examples/calibrate.rs encodes the study 5-factor contingency matrix through a linear palette member and a data-adaptive (turbovec/CAM-PQ) member across 2/4/6/8 bit, certifies per axis + construct structure (alpha-match, discriminant), prints the schema oracle. Findings (real ES core, members stored normalized): - ALL 5 factors certify by VALUE at 2-bit linear (ICC >= 0.96) - existing palette/turbovec tenants already suffice per value. - alpha preserved within 0.02 at >=4-bit; discriminant wobbles at N=24 under coarse bins => read cross-axis orthogonality at >=6-bit. - Self-correction: d_lambda2 initial ICC=0 was NOT heavy-tail nor near-constant - a tiny-magnitude (~1e-7) underflow of the ICC variance guard; storing the member normalized fixes it (1.00 at 2-bit). Two earlier guesses falsified and retracted. src/columns.rs: the calibrated SoaMemberSpec set (operator-authorized additive design). The 5 factors map to existing tenants (2-bit linear, normalized, read >=6-bit); the ONE genuinely additive member is inertia_buffer - the axis the resilience study measured orthogonal to topology, which no existing connectivity column carries. Spec only; nothing serializes or touches canonical_node. 3 tests. 71 lib tests; clippy -D warnings clean; fmt clean.
📝 WalkthroughWalkthroughTwo independent changes: the CI ChangesCI link-footprint fix
perturbation-sim: HHTL keys, calibrated columns, and examples
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bb76568e91
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…aming
1. columns.rs correction (operator): orthogonality to topology is STRUCTURAL, not
earned. In the HHTL-OGAR GUID model topology lives in the KEY (HEEL/HIP/TWIG
cascade tiers); magnitude axes are helix value members hung off it, so any helix
value member is orthogonal to topology by the key/value split. The resilience
study's Spearman(λ₂,buffer)≈0 CONFIRMS what the GUID addressing already enforces;
it does not establish a new axis. inertia_buffer is reframed as one more
helix-residue value slot (Encoding::HelixResidue added), not a novel orthogonal
column. Field/doc semantics of `additive` updated accordingly.
2. CLAM_CHAODA_FRAMING.md: the resilience study framed as CLAM (cluster tree) +
CHAODA (anomaly ensemble) on the electrical-distance manifold — grounded against
real ndarray::hpc::clam APIs: Cluster{radius,cardinality,lfd} (clam.rs:106), Lfd
(clam.rs:81), ClamTree::anomaly_scores (clam.rs:1517). The compartment hierarchy
= CLAM tree; the fail-first exposure ranking = CHAODA anomaly score; the three
orthogonal axes = CHAODA's diverse-detector ensemble, and the study's low
Cronbach α IS CHAODA's non-redundancy design goal. Honest scope: structural
correspondence onto real APIs [G]; perturbation-sim NOT wired to clam [H]; the
falsifiable bridge (build ClamTree over the factor rows, correlate anomaly_scores
vs exposure) named as the [H]→[G] probe.
71 lib tests; clippy -D warnings clean; fmt clean.
…arrier fit P2 (columns.rs): the calibration's own oracle rejects 2-bit for infight on the synthetic grid (2-bit ICC 0.93 < 0.95; → 4-bit), even though the ES core gives 0.96. infight is therefore MARGINAL and input-dependent, so the spec now advertises its ROBUSTLY certified width (4-bit, ICC ≥ 0.99 on both inputs), not the width that squeaks by on one favorable sample. `spec()` gains a store_bits param; the other four factors stay 2-bit. Test + calibrate headline updated to the honest verdict. Carriers (operator): the spec maps onto the two existing substrate tiers — 16 × 8-bit ResidueEdge slots (structure read, read_bits ≤ 8) and 32 × 4-bit turbovec lanes (pairwise turboquant; per-value store, store_bits ≤ 4 — infight's 4-bit is exactly one lane). Six members fit either with headroom; new test fits_substrate_carriers asserts it. No new layout — only slot assignments. 72 lib tests; clippy -D warnings clean; fmt clean.
|
Fixed in
This also lands cleanly on the substrate's real carriers (operator note): the per-value store is a 4-bit turbovec lane (pairwise turboquant) — 72 lib tests, Generated by Claude Code |
…ple)
Construct the HHTL (HEEL,HIP,TWIG) cascade address of each bus by recursive
binary Cheeger bisection of the Laplacian — a PURE, deterministic function of the
topology spectrum. Makes "topology IS the key" (the HHTL-OGAR correction) concrete:
value members hang off this key, orthogonal to it by the key/value split.
- src/hhtl.rs: hhtl_keys(grid) -> Vec<HhtlKey{heel,hip,twig}>; basin_lambda2 keyed
by HHTL. 3 tests (determinism; the two weakly-bridged blocks split on HEEL; keys
partition the nodes).
- examples/hhtl_grid.rs on the real ES core: 8 keyed basins reproducing the
resilience study's compartments EXACTLY (sizes 29/21/5/45/49/53/27/32); the
fail-first Spanish-seam basin gets the concrete deterministic address 1.0.1
(λ₂=1.72e-6) = compartment 5 of PAPER §4.10. Verifies determinism in-run.
Binary-Cheeger tiers here; OGAR widens each tier to a 16-ary/256-centroid tile
(noted, not implemented). Zero-dep; no contract touch.
75 lib tests; clippy -D warnings clean; fmt clean.
…D-CI-COVERAGE-MOLD-1) The `test` job has begun hitting the same disk/RSS link cliff already mitigated on `test-with-coverage` (b56bb2c): `ld terminated with signal 7 [Bus error]` + an LLVM crash at the `cargo test --no-run` link step of test_sql_query / intervene_counterfactual. Root cause is link-footprint growth, NOT a logic break (a layout break would fail an assertion, not SIGBUS at link). PR #507 (0c6ef02, +4055 lines across causal-edge ce64-v2 layout + cognitive-shader-driver MailboxSoaOwner / SurrealMailboxView) grew the integration-test object set enough to tip the previously-marginal `test`-job link over the same ceiling. It surfaced on the first full-workspace CI run after #507 (the intervening PRs are root-excluded crates, so their CI never linked the post-#507 tree). Fix: give the `test` job a job-level RUSTFLAGS with `-C debuginfo=0` (parity with the coverage job). debuginfo carries no value in CI (no debugger is attached); dropping it cut the coverage job's per-binary link ~930 MB -> ~252 MB (-73%, measured in b56bb2c) and relieves both the mold/GNU-ld RSS and the disk ceiling. mold is already installed on this job. Side effect: the job gets its own Swatinem cache key (first run repopulates). This is a fence (buys headroom), not a root reduction of #507's legitimate codegen — documented as such in the TD-CI-COVERAGE-MOLD-1 ledger addendum, including the secular-growth caveat and the separate (warns-not-fails) intervene_counterfactual.rs deprecated-API debt.
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.claude/board/TECH_DEBT.md:
- Line 179: The line at the start of the entry begins with "`#507`" which is being
interpreted as a Markdown ATX heading token and causing an MD018 lint error. Fix
this by either prefixing the line with descriptive text like "PR `#507`" instead
of starting directly with "`#507`", or by escaping the hash character. Either
approach will prevent the malformed heading parsing and eliminate the lint error
while maintaining readability.
- Around line 150-180: The 2026-06-16 addendum text has been inserted into the
middle of an existing tech debt entry, violating the append-only governance
policy for `.claude/board/*.md` files. Remove this inserted narrative from the
historical entry body, then create a new dated entry and prepend it to the top
of the TECH_DEBT.md file with the 2026-06-16 addendum content. Only edit
Status/Confidence fields of historical entries; all new information must go in
new prepended entries to preserve immutability of past narratives.
In `@crates/perturbation-sim/examples/calibrate.rs`:
- Around line 124-140: The code panics when the grid is degenerate (specifically
when m, the number of edges, equals 0) because k becomes 0, causing division by
zero in the expression m / k. Additionally, downstream operations like
eigenvector(1) and m - 1 will fail on empty or minimal grids. Add an upfront
validation guard before the symmetric_eigen call that checks the grid has a
minimum required shape (e.g., m > 0 and n > 1), and handle the degenerate case
appropriately by returning early or raising an error. This prevents panics from
occurring in the candidate selection logic and protects all subsequent
assumptions about grid structure.
In `@crates/perturbation-sim/src/hhtl.rs`:
- Around line 108-112: The basin_lambda2 function silently produces incorrect
results when the keys slice length does not match grid.n, corrupting basin
groupings. Add a precondition check at the start of basin_lambda2 (immediately
after the function signature) to validate that keys.len() equals grid.n, either
returning an error or panicking with a clear message if the lengths mismatch.
This prevents silent data corruption by failing fast at the API boundary.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 82104a56-5783-48c5-8367-bd71997b3ec0
📒 Files selected for processing (9)
.claude/board/TECH_DEBT.md.github/workflows/rust-test.ymlcrates/perturbation-sim/CLAM_CHAODA_FRAMING.mdcrates/perturbation-sim/Cargo.tomlcrates/perturbation-sim/examples/calibrate.rscrates/perturbation-sim/examples/hhtl_grid.rscrates/perturbation-sim/src/columns.rscrates/perturbation-sim/src/hhtl.rscrates/perturbation-sim/src/lib.rs
| **2026-06-16 addendum — the `test` job now hits the SAME cliff; fix extended to | ||
| it (branch `claude/ci-test-job-debuginfo0`).** The cliff this entry called out as | ||
| *"a 2/50 intermittent"* on the coverage job has now surfaced on the **plain | ||
| `test`** job: `ld terminated with signal 7 [Bus error]` + an LLVM crash dump at | ||
| the `cargo test --no-run` link step of `test_sql_query` / `intervene_counterfactual`. | ||
| Root-caused to a **link-footprint growth, not a logic break** (a layout break would | ||
| fail an assertion, not SIGBUS at link): **PR #507** (`0c6ef02c`, +4055/−1048 across | ||
| `causal-edge` edge.rs/layout.rs — the ce64-v2 layout — and `cognitive-shader-driver` | ||
| mailbox_soa.rs/driver.rs/planner_bridge.rs — MailboxSoaOwner + SurrealMailboxView, | ||
| D-PG-6) grew the object-file set linked by the lance-graph integration tests enough | ||
| to tip the previously-marginal `test`-job link over the same disk/RSS ceiling. It | ||
| surfaced on the first full-workspace CI run *after* #507 (the two PRs between, #509 | ||
| and the perturbation-sim #511, are root-`exclude`d so their CI never linked the | ||
| post-#507 tree — which is why this is "the first failing PR" yet not its fault). | ||
| **This is a FENCE, not a root reduction:** it does not shrink #507's legitimate | ||
| codegen; it removes the dead `debuginfo=1` weight (CI never opens a debugger) to | ||
| buy headroom — exactly the b56bb2cd lever, now applied to the `test` job. **Fix:** | ||
| job-level `RUSTFLAGS: "-C debuginfo=0 -C target-cpu=x86-64-v3"` on `test` (parity | ||
| with `test-with-coverage`; mold already installed). Side effect: the `test` job | ||
| gets its own Swatinem cache key (first run repopulates). **Confirm** on the next | ||
| green `test` run. **Residual debt if it recurs after this:** the footprint is on a | ||
| secular upward trend (every cognitive-layer PR adds codegen) — the durable fix is a | ||
| bigger runner or splitting the integration-test link set, not repeatedly shaving | ||
| flags. Separately, #507 left `intervene_counterfactual.rs:133/165` calling the | ||
| **deprecated** `CausalEdge64::inference_type()` (the consumer-migration commit | ||
| `8131c480` lives on the unmerged `claude/continue-ndarray-x0Oaw`) — that WARNS, does | ||
| not fail (v1 default routes through the canonical mapping per I-LEGACY-API-FEATURE- | ||
| GATED); tracked here as a separate latent item, not fixed on this CI branch. | ||
| Cross-ref: `.github/workflows/rust-test.yml` (now both jobs at `debuginfo=0`); PR | ||
| #507 (`0c6ef02c`); `claude/continue-ndarray-x0Oaw` (the pending ce64-v2 consumer | ||
| migration). |
There was a problem hiding this comment.
Keep board entries append-only by prepending a new row instead of editing historical body text.
Line 150-Line 180 inserts a new narrative addendum inside an existing debt item body. This breaks the board governance contract; please move this to a new prepended dated entry and leave historical prose immutable (except Status/Confidence fields).
As per coding guidelines, ".claude/board/*.md: Append-only governance files (.claude/board/): prepend new entries ... never edit past entries except Status/Confidence lines."
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 179-179: No space after hash on atx style heading
(MD018, no-missing-space-atx)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.claude/board/TECH_DEBT.md around lines 150 - 180, The 2026-06-16 addendum
text has been inserted into the middle of an existing tech debt entry, violating
the append-only governance policy for `.claude/board/*.md` files. Remove this
inserted narrative from the historical entry body, then create a new dated entry
and prepend it to the top of the TECH_DEBT.md file with the 2026-06-16 addendum
content. Only edit Status/Confidence fields of historical entries; all new
information must go in new prepended entries to preserve immutability of past
narratives.
Source: Coding guidelines
There was a problem hiding this comment.
Valid governance observation. Deferring the restructure (not bundling it into the #512 code-fix PR): moving the 31-line 2026-06-16 addendum out to a prepended dated entry is a board-hygiene reorganization, and it would separate the addendum from the CI-debuginfo entry it directly extends. Better done deliberately as its own board pass than churned alongside the perturbation-sim guards. Leaving this thread open as the tracked item.
Generated by Claude Code
There was a problem hiding this comment.
@AdaWorldAPI — understood, the deferral rationale is sound. Restructuring the entry as a standalone board-hygiene pass keeps it deliberately scoped and avoids churning the governance file alongside CI fixes.
Would you like me to open a GitHub issue to formally track the board-hygiene reorganization (moving the 2026-06-16 addendum from inside TD-CI-COVERAGE-MOLD-1's body to a new prepended dated entry)? That way it won't be lost in this PR thread once #511 merges.
PR #511 merged 2026-06-16 19:01 UTC (merge commit c3dddfc) on main — +886/-0 additive substrate calibration in perturbation-sim: examples/calibrate.rs (ICC/Spearman/Pearson/Cronbach α battery against perturbation-sim as ground truth), src/columns.rs (calibrated SoaMemberSpec, spec only), src/hhtl.rs, examples/hhtl_grid.rs, CLAM_CHAODA_FRAMING.md. Headline locks: - 5 contingency factors certify by VALUE at 2-bit linear (ICC ≥ 0.96) — existing palette/turbovec tenants suffice; §10 "statistics survive the encoding" CONFIRMED. - α preserved within Δ ≤ 0.02 at ≥4-bit; read ≥6-bit for orthogonality. - inertia_buffer is the one genuinely additive member — orthogonal to topology per #509 (Spearman(λ₂, buffer) ≈ 0). Spec only; promotion gated by §0 anti-invention guardrail. - d_lambda2's ICC=0 was a variance-guard underflow at ~1e-7 magnitude; two prior guesses (heavy-tail / near-constant) retracted on the run. - Significance per Jirak n^(p/2−1) (I-NOISE-FLOOR-JIRAK). - Does NOT touch the operator-locked canonical_node. Files updated this commit: - PR_ARC_INVENTORY.md PREPEND #511 entry - LATEST_STATE.md dated bullet + Recently-Shipped row - AGENT_LOG.md PREPEND session entry covering both odoo-rs SEED (cross-repo, commit ebfb2c3 on AdaWorldAPI/odoo-rs main) AND this #511 board hygiene. Retroactive cleanup (merge landed before the same-commit hygiene rule could fire — the AGENT_LOG entry records this). https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
#511) Addresses the open review findings on the merged #511: - examples/calibrate.rs: guard degenerate grids up front. `k = 24.min(m)` is 0 when m==0, so `m / k` panics (divide by zero); `eigenvector(1)` / `m - 1` also break on n<2. Exit cleanly with a message instead. (CodeRabbit Major) - src/hhtl.rs: basin_lambda2 asserts keys.len() == grid.n. A mismatched slice silently produced wrong basin groupings + lambda2; fail fast at the API boundary. (CodeRabbit Major) - .claude/board/TECH_DEBT.md: reflow the wrapped `#507` so it is not parsed as an ATX heading (markdownlint MD018). (CodeRabbit Minor) Already-fixed before merge (no change needed): Codex P2 — `infight` is 4-bit (columns.rs `spec("infight", 4, ...)`, the certified width per the §10 note). Deferred: the TECH_DEBT.md append-only addendum-placement nit (CodeRabbit Major) is a board-hygiene reorganization, left to a focused governance pass rather than churned inside a code-fix PR. Gates: fmt + clippy -D warnings + test green (75 lib tests) on the standalone perturbation-sim crate. https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1
fix(perturbation-sim): degenerate-grid + key-cardinality guards (review #511)
Two lance-graph PRs merged this evening, both touching the standalone perturbation-sim crate: #513 (merged 20:27:59 UTC, 8a3e335) — +1009/-2: - §0 promotion gate: GuardrailVerdict::RatifiedReuse for inertia_buffer (takes ResidueEdge INERTIA_SLOT=5, reuses existing tenant, no new axis → passes by reuse not waiver) - Probe 1: CAKES + CHAODA-lite over HHTL basins - Probe 2: witness arc as standing wave via Parseval (particle == wave to 0.00e0; O(N)-per-arc read-many amortization) - Probe 3: per-bus inertia (H) ingest path #512 (merged 20:33:00 UTC, 1e23c41) — +591/-5: CODE FIXES (review of #511): - calibrate.rs: divide-by-zero guard on degenerate grid (CodeRabbit Major) - basin_lambda2: assert_eq!(keys.len(), grid.n, …) precondition, promoting silent corruption to loud panic (CodeRabbit Major) - TECH_DEBT.md MD018 reflow (CodeRabbit Minor) DOCTRINE (the structural delivery, NEW to this session): - .claude/knowledge/core-first-transcode-doctrine.md (218 LOC, mandatory-read) - 3 specialist agent cards: core-first-architect, core-gap-auditor, adapter-shaper - BOOT.md + README.md wires - EPIPHANIES entry (24 LOC) - CLAUDE.md doctrine wire-up (+21 LOC, content unread by this thread) The core-first doctrine is likely directly aligned with the ontology-first stance the operator locked in on odoo-rs this session (Odoo's ontology runs natively in SurrealDB, codegen is the deferred "cut tail"). Cross-doctrine reconciliation between core-first-transcode-doctrine.md and the existing lab-vs-canonical spine not yet inspected here — flagged in PR_ARC entry confidence line. Retroactive batch hygiene — both merges landed before the same-commit rule could fire. PR_ARC prepend (newest #512 above #513 above #511) + LATEST_STATE dated bullets + recent-shipped rows. https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
PR #511 merged 2026-06-16 19:01 UTC (merge commit c3dddfc) on main — +886/-0 additive substrate calibration in perturbation-sim: examples/calibrate.rs (ICC/Spearman/Pearson/Cronbach α battery against perturbation-sim as ground truth), src/columns.rs (calibrated SoaMemberSpec, spec only), src/hhtl.rs, examples/hhtl_grid.rs, CLAM_CHAODA_FRAMING.md. Headline locks: - 5 contingency factors certify by VALUE at 2-bit linear (ICC ≥ 0.96) — existing palette/turbovec tenants suffice; §10 "statistics survive the encoding" CONFIRMED. - α preserved within Δ ≤ 0.02 at ≥4-bit; read ≥6-bit for orthogonality. - inertia_buffer is the one genuinely additive member — orthogonal to topology per #509 (Spearman(λ₂, buffer) ≈ 0). Spec only; promotion gated by §0 anti-invention guardrail. - d_lambda2's ICC=0 was a variance-guard underflow at ~1e-7 magnitude; two prior guesses (heavy-tail / near-constant) retracted on the run. - Significance per Jirak n^(p/2−1) (I-NOISE-FLOOR-JIRAK). - Does NOT touch the operator-locked canonical_node. Files updated this commit: - PR_ARC_INVENTORY.md PREPEND #511 entry - LATEST_STATE.md dated bullet + Recently-Shipped row - AGENT_LOG.md PREPEND session entry covering both odoo-rs SEED (cross-repo, commit ebfb2c3 on AdaWorldAPI/odoo-rs main) AND this #511 board hygiene. Retroactive cleanup (merge landed before the same-commit hygiene rule could fire — the AGENT_LOG entry records this). https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
Two lance-graph PRs merged this evening, both touching the standalone perturbation-sim crate: #513 (merged 20:27:59 UTC, 8a3e335) — +1009/-2: - §0 promotion gate: GuardrailVerdict::RatifiedReuse for inertia_buffer (takes ResidueEdge INERTIA_SLOT=5, reuses existing tenant, no new axis → passes by reuse not waiver) - Probe 1: CAKES + CHAODA-lite over HHTL basins - Probe 2: witness arc as standing wave via Parseval (particle == wave to 0.00e0; O(N)-per-arc read-many amortization) - Probe 3: per-bus inertia (H) ingest path #512 (merged 20:33:00 UTC, 1e23c41) — +591/-5: CODE FIXES (review of #511): - calibrate.rs: divide-by-zero guard on degenerate grid (CodeRabbit Major) - basin_lambda2: assert_eq!(keys.len(), grid.n, …) precondition, promoting silent corruption to loud panic (CodeRabbit Major) - TECH_DEBT.md MD018 reflow (CodeRabbit Minor) DOCTRINE (the structural delivery, NEW to this session): - .claude/knowledge/core-first-transcode-doctrine.md (218 LOC, mandatory-read) - 3 specialist agent cards: core-first-architect, core-gap-auditor, adapter-shaper - BOOT.md + README.md wires - EPIPHANIES entry (24 LOC) - CLAUDE.md doctrine wire-up (+21 LOC, content unread by this thread) The core-first doctrine is likely directly aligned with the ontology-first stance the operator locked in on odoo-rs this session (Odoo's ontology runs natively in SurrealDB, codegen is the deferred "cut tail"). Cross-doctrine reconciliation between core-first-transcode-doctrine.md and the existing lab-vs-canonical spine not yet inspected here — flagged in PR_ARC entry confidence line. Retroactive batch hygiene — both merges landed before the same-commit rule could fire. PR_ARC prepend (newest #512 above #513 above #511) + LATEST_STATE dated bullets + recent-shipped rows. https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
PR #511 merged 2026-06-16 19:01 UTC (merge commit c3dddfc) on main — +886/-0 additive substrate calibration in perturbation-sim: examples/calibrate.rs (ICC/Spearman/Pearson/Cronbach α battery against perturbation-sim as ground truth), src/columns.rs (calibrated SoaMemberSpec, spec only), src/hhtl.rs, examples/hhtl_grid.rs, CLAM_CHAODA_FRAMING.md. Headline locks: - 5 contingency factors certify by VALUE at 2-bit linear (ICC ≥ 0.96) — existing palette/turbovec tenants suffice; §10 "statistics survive the encoding" CONFIRMED. - α preserved within Δ ≤ 0.02 at ≥4-bit; read ≥6-bit for orthogonality. - inertia_buffer is the one genuinely additive member — orthogonal to topology per #509 (Spearman(λ₂, buffer) ≈ 0). Spec only; promotion gated by §0 anti-invention guardrail. - d_lambda2's ICC=0 was a variance-guard underflow at ~1e-7 magnitude; two prior guesses (heavy-tail / near-constant) retracted on the run. - Significance per Jirak n^(p/2−1) (I-NOISE-FLOOR-JIRAK). - Does NOT touch the operator-locked canonical_node. Files updated this commit: - PR_ARC_INVENTORY.md PREPEND #511 entry - LATEST_STATE.md dated bullet + Recently-Shipped row - AGENT_LOG.md PREPEND session entry covering both odoo-rs SEED (cross-repo, commit ebfb2c3 on AdaWorldAPI/odoo-rs main) AND this #511 board hygiene. Retroactive cleanup (merge landed before the same-commit hygiene rule could fire — the AGENT_LOG entry records this). https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
Two lance-graph PRs merged this evening, both touching the standalone perturbation-sim crate: #513 (merged 20:27:59 UTC, 8a3e335) — +1009/-2: - §0 promotion gate: GuardrailVerdict::RatifiedReuse for inertia_buffer (takes ResidueEdge INERTIA_SLOT=5, reuses existing tenant, no new axis → passes by reuse not waiver) - Probe 1: CAKES + CHAODA-lite over HHTL basins - Probe 2: witness arc as standing wave via Parseval (particle == wave to 0.00e0; O(N)-per-arc read-many amortization) - Probe 3: per-bus inertia (H) ingest path #512 (merged 20:33:00 UTC, 1e23c41) — +591/-5: CODE FIXES (review of #511): - calibrate.rs: divide-by-zero guard on degenerate grid (CodeRabbit Major) - basin_lambda2: assert_eq!(keys.len(), grid.n, …) precondition, promoting silent corruption to loud panic (CodeRabbit Major) - TECH_DEBT.md MD018 reflow (CodeRabbit Minor) DOCTRINE (the structural delivery, NEW to this session): - .claude/knowledge/core-first-transcode-doctrine.md (218 LOC, mandatory-read) - 3 specialist agent cards: core-first-architect, core-gap-auditor, adapter-shaper - BOOT.md + README.md wires - EPIPHANIES entry (24 LOC) - CLAUDE.md doctrine wire-up (+21 LOC, content unread by this thread) The core-first doctrine is likely directly aligned with the ontology-first stance the operator locked in on odoo-rs this session (Odoo's ontology runs natively in SurrealDB, codegen is the deferred "cut tail"). Cross-doctrine reconciliation between core-first-transcode-doctrine.md and the existing lab-vs-canonical spine not yet inspected here — flagged in PR_ARC entry confidence line. Retroactive batch hygiene — both merges landed before the same-commit rule could fire. PR_ARC prepend (newest #512 above #513 above #511) + LATEST_STATE dated bullets + recent-shipped rows. https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx
What
The substrate-calibration loop the operator asked for: use this crate's deterministic study as ground truth, encode its factor matrix through the SoA value tenants, and certify with the
certification-officerbattery (ICC / Spearman / Cronbach α). Then emit the additive member design the substrate needs. Additive only —examples/calibrate.rs(new) +src/columns.rs(spec only, nothing serializes, does not touch the operator-lockedcanonical_node).Are ICC/Cronbach valid to compare the substrate? — yes, with the right reads
n^(p/2−1)rate.Findings (real ES core, members stored normalized)
d_lambda2's initial ICC=0 was not heavy-tail and not near-constant — it was a tiny-magnitude (~1e-7) underflow of ICC's variance guard; storing the member normalized fixes it (1.00 at 2-bit). Both wrong hypotheses are retracted in the example headline.The additive design (
src/columns.rs)A calibrated
SoaMemberSpecset: the 5 factors map to existing tenants (2-bit linear, normalized, read ≥6-bit). The one genuinely additive member isinertia_buffer— the axis the resilience study (PR #509) measured orthogonal to topology (Spearman(λ₂, buffer) ≈ 0), which no existing connectivity column can carry. Spec only; promoting it intolance-graph-contractis a separate gated step.Scope / honesty
src/columns.rsis a design spec, not a runtime encoder — no serialization, no spine edits.main; 71 lib tests;clippy -D warningsclean; fmt clean.https://claude.ai/code/session_01CcpLeEC3XK8Eye53GKBVvi
Generated by Claude Code
Summary by CodeRabbit
New Features
Documentation
Chores