diff --git a/.claude/board/AGENT_LOG.md b/.claude/board/AGENT_LOG.md index fa5ddda97..95aa64e42 100644 --- a/.claude/board/AGENT_LOG.md +++ b/.claude/board/AGENT_LOG.md @@ -1,3 +1,19 @@ +## 2026-08-11 — Workflow `wf_99d677e6-b45` — eval-plan verify/attack (13 agents; orchestrator-consolidated) + +13/13 completed, 0 errors, 0 empty; ~4.42 M subagent tokens, 165 tool calls, +~20 min. 7 × Sonnet source-verifiers over the K-1..K-25 ledger (READ-ONLY, no +cargo, per-claim CONFIRMED/PARTIAL/REFUTED with file:line quotes) + 6 × Opus +falsifier-auditors attacking EV-1..EV-10 (can-it-fail / two-sided / +inert-thresholds / vacuous-pass-routes / apparatus). + +Outcome: verify 22 CONFIRMED, 2 PARTIAL (K-23 path `src/bitwise.rs` not +`src/hpc/`; K-21 sprite-not-field + toroidal note); attack **11/11 NOT SOUND** +(10 VACUOUS, 1 UNDERSPECIFIED). Consolidated by the main thread into: plan §3 +fully rewritten to v2 specs, §8 audit record, §1 K-row corrections, DRAFT → +ACTIVE flip; knowledge doc §12.18 (§12.16 sprite correction); EPIPHANIES +`E-ZERO-FOR-ELEVEN-…-1`. Sole-writer rule observed: agents wrote no board +files; this entry is the orchestrator's consolidation. + ## 2026-08-05 — lance 9 / DataFusion 54 / Rust 1.97.1 cross-repo bump (main thread + 2 Sonnet grindworkers) - **Agents:** main thread (design, adjudication, all commits/pushes) + 2 Sonnet diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 5157a30a7..5b4fd2095 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -1,3 +1,39 @@ +## 2026-08-11 — E-ZERO-FOR-ELEVEN-THE-AUTHOR-CANNOT-AUDIT-HIS-OWN-FALSIFIERS-1 + +**Status:** FINDING `[G]` — measured by the 13-agent verify/attack pass on +`weather-substrate-evaluation-v1.md` (run `wf_99d677e6-b45`; plan §8 is the +full record). + +**Every one of the eleven EV test specs failed adversarial pre-registration +audit** — 10 VACUOUS, 1 UNDERSPECIFIED, zero SOUND — despite being written by +an author who had *just* been corrected through seven sections +(§12.10–§12.17) for exactly these failure modes and cited the falsifiability +rule inside the specs themselves. Meanwhile the same pass CONFIRMED 22 of 24 +KNOWN-ledger claims outright (2 PARTIAL: a file path; "whole-field shift" +overstating a sprite translate). + +**The asymmetry is the finding:** the author was reliable about what IS +(evidence-backed claims, 22/24) and near-uniformly unreliable about what WOULD +FALSIFY (0/11). Specimen defects, each a house classic reborn: a silence half +that was an identity comparison (calm tiles, where the shift rounds to 0); a +silence half that was an arithmetic tautology (`circular == linear` for +`|a−b| ≤ 128` — the 90° sector spans 64); `count > 0` implied by the sampling +design (`elimination_rate()` verbatim); a vacuity guard pre-satisfied by +committed data; "monotone" satisfiable by a dead knob; a fixture that 404s at +the pinned timestep feeding a pipeline whose anomaly step destroys the very +bound-mass under test; an "exact to 1e-4" gate over 3-sig-fig prose constants +AND Monte-Carlo statistics; a claim naming top-k with no criterion touching +top-k; a stale-fixture route where a "winter" run re-measures summer bytes; +`cos(lat)` missing from the one formula that fires where winds are strong. + +**Rule:** *pre-registration review by independent adversarial readers is +load-bearing, not ceremony.* Naming a discipline is not applying it, and the +spec's author is structurally the wrong person to find its vacuous pass +routes — same-author review already failed measurably ONCE this arc (§12.10 +announced the right frame and shipped the wrong one). Route every probe spec +through an attack pass BEFORE its first run; the attack is cheap relative to a +probe that cannot fail. + ## 2026-08-11 — E-THE-FRAME-WAS-ALREADY-SHIPPED-FOUR-TIMES-1 **Status:** FINDING `[G]` — read in source this session. diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index b1162f397..15518c5dc 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -1,3 +1,14 @@ +## 2026-08-11 — lance-graph #923 (MERGED) — the evaluation plan + `DistanceLut::circular()` + +### Current Contract Inventory — one new public constructor; one new plan + +- **`helix::DistanceLut::circular()`** — `min(|a−b|, 256−|a−b|)`, the cycle-graph geodesic on `Z_256`. **A metric, proven EXHAUSTIVELY: 0 violations / 16 777 216 triples.** Use for any quantity whose range **wraps** (bearing, phase, angle); `linear()` is simply the wrong table there — it puts index 255 and 0 at *maximum* distance when they are adjacent. Same `[a,b]` amortization as every other constructor. +- **`.claude/plans/weather-substrate-evaluation-v1.md`** — the arc's known-vs-test ledger. **§1** 25 KNOWN claims with `file:line` + per-row grades; **§2** the honesty split (only K-12/K-13 lack a committed reproducer); **§3** EV-1..EV-10 in three waves (0 = no data · 1 = one fixture re-fetch · 2 = scale); **§5** the D-1..D-6 operator decision register. **Ships DRAFT-pending-audit** — §8 folds a 13-agent verify/attack pass and flips it ACTIVE. +- **The `[a,b]` amortization, stated `[G]`:** `quantize()` normalizes once per element at ingest (`quantize.rs:99`); `from_floor()` folds the SAME normalization into the table (`distance.rs:39`). Afterwards there is no `lo`, no `hi`, no division — a pure index lookup in **unit-free** units. That is what licenses cross-variable comparison, and it is O(256²) once rather than O(N²). +- **Field-vs-element, locked:** judge a normalized representation by what its **field** does. nearest-`n` = ONE palette index → 2 × LUT u8 lookups, L1 metric, CAKES-safe, `U8x64`, feeds `int8_gemm_amx_tiled(a_u8, b_i8, …)` directly. u8-palette azimuth under `circular()` = **0.352° mean**, beating nearest-`n`'s 0.972° while keeping that shape. Raw u16 azimuth is circular and tileless. +- **The stack is BUILT, not proposed** (§12.17): `perturbation-sim` (`rolling_floor` = the CI-threshold frame, Jirak-cited · `splat`/`sketch` = the magnitude/sign two-algebra rule · `cascade_key::morton48` · `hhtl` by Cheeger bisection), `ndarray::hpc::splat3d` (3DGS, `TILE_SIZE=16`, depth cascade already HHTL), `symbiont/domino.rs` (16 SoA boards per AMX 16×16 tile GEMM, real `TDPBF16PS`). **The `mu+kσ` frame ships 4× — new probes must be its 5th instance, not its 5th implementation.** +- **Still open, operator calls:** D-1 noise floor · D-2 saturation window · D-3 `from_bearing` API · D-4 dormant-lane fix shape · D-5 helix CI wiring (`[G-absence]`: excluded from the root workspace, in no workflow) · D-6 harness-of-record. + ## 2026-08-11 — lance-graph #921 (MERGED) — the wind reuse, measured: the prescribed bearing-encode is 10× worse than the direct one ### Current Contract Inventory — no new types (one committed measurement, one doc section, board hygiene) diff --git a/.claude/board/PR_ARC_INVENTORY.md b/.claude/board/PR_ARC_INVENTORY.md index c9dd62872..73d97d6e2 100644 --- a/.claude/board/PR_ARC_INVENTORY.md +++ b/.claude/board/PR_ARC_INVENTORY.md @@ -1,3 +1,15 @@ +## 2026-08-11 — lance-graph #923 (MERGED) — the evaluation plan (KNOWN vs TO TEST), `DistanceLut::circular()`, and the two verdict inversions that reshaped both + +- **Added.** `.claude/plans/weather-substrate-evaluation-v1.md` — the arc's known-vs-test ledger: **§1 KNOWN K-1..K-25** each with `file:line` and an honest grade (`[G]` / `[G-session]` probe-source-committed-fixture-fetched / `[H]` measured-but-no-committed-reproducer / `[G-absence]`), **§2** the honesty split naming the only two `[H]` rows, **§3 EV-1..EV-10** in three waves, **§4** wave gating, **§5** the D-1..D-6 operator decision register. `DistanceLut::circular()` + 3 tests (`crates/helix/src/distance.rs`). Knowledge-doc §12.14–§12.17. Three EPIPHANIES entries. +- **Locked.** **Topology selects the TABLE FORMULA; it never decides whether a quantity belongs in the palette domain.** `circular()` = `min(|a−b|, 256−|a−b|)`, the cycle-graph geodesic on `Z_256`, proven a metric **exhaustively — 0 violations over all 256³ = 16 777 216 triples** (not stride-sampled), wrap falsifier `d_circ(255,0)=1` vs `d_linear(255,0)=255`. So `distance.rs:8-10`'s *"raw-azimuth is NOT a metric (the 2π wrap)"* is a statement about the **formula**, not about angles. **The LUT is the `[a,b]` AMORTIZATION POINT** — `quantize()` normalizes once per element at ingest, `from_floor()` folds the SAME normalization into the table; afterwards comparisons are pure lookups in **unit-free** units (which is what licenses cross-variable comparison), O(256²) once instead of O(N²). **Judge a normalized representation by what its FIELD does, not by what one element decodes to** — a per-element accuracy number is the round-trip metric wearing a different hat. **A doctrine written for one domain is not automatically right for the next one that reuses it.** **Before writing a frame, grep the workspace for the frame.** +- **Measured `[G]`.** Bearing encodes at N=65536: nearest-`n` **0.972°** mean vs direct `(polar,azimuth)` **0.097°** — but at field scale nearest-`n` collapses direction to ONE palette index (2 × `DistanceLut` u8 lookups, L1 metric, CAKES-safe, `U8x64`, feeds `int8_gemm_amx_tiled(a_u8, b_i8, …)` directly) while raw u16 azimuth is circular and tileless. **u8-palette azimuth under `circular()` = 0.352° mean** — beats nearest-`n` AND keeps the field ergonomics. Morton motion is **O(1) in pixels** (`dx=7 dy=5 bit_exact=1 motion_bytes=2 sprite_px=576`, interior residual 0, `disocc_frac=0.1215`); comma fence `three_gap_distinct=3`, `coprime_full_perm=1`. `64×64 = 4096 cells = 4096 bit = 512 B = 64×u64` = **the CANON node stride** — a node's bits ARE a bitboard, `masked_popcount_batch(words, mask)` IS `popcount(attacks & targets)`. +- **⊘ Corrections this PR carries (three verdict changes on ONE question).** §12.13 ranked the bearing encodes by angular **reconstruction** error — the metric §12.10 rules out — and was inverted by §12.14 on field ergonomics; §12.14 was then itself **too strong**, and §12.15 resolved it: the fix was never "abandon the direct path", it was **give the wrapping lane its own table**. **`crates/perturbation-sim::rolling_floor::RollingFloor` already IS the "corrected evaluation frame"** of §12.10/§12.11 — `threshold()` = *"the confidence-interval floor"* `mu+k·σ`, `z()` = *"the Jirak-honest noise-floor units; significance via n^(p/2−1), not IID"*, `band()`, `preheat()`, rolling `observe()` — **and I re-derived it in Python.** It is the **fourth** instance of one frame (`ndarray::Cascade::expose`, `perturbation-sim`, `helix::RollingFloor`, `domino`'s 3σ top-K). +- **Deferred.** The plan ships **DRAFT-pending-audit** by its own header — a 13-agent verify/attack pass folds in as §8 and flips it ACTIVE. No public `from_bearing` minted (D-3). EV-1..EV-10 all **Queued**, none run. D-1..D-6 open. Filed-not-fixed: the `Signed360::sign()` dormant-lane defect (pinned by a defect test that a fix must break deliberately). +- **Docs.** `weather-substrate-evaluation-v1.md`; knowledge §12.14–§12.17; EPIPHANIES `E-JUDGE-THE-FIELD-NOT-THE-ELEMENT-1`, `E-TOPOLOGY-PICKS-THE-TABLE-NOT-THE-DOMAIN-1`, `E-THE-FRAME-WAS-ALREADY-SHIPPED-FOUR-TIMES-1`; INTEGRATION_PLANS + STATUS_BOARD (11 EV rows). + +**Confidence (2026-08-11):** merged. `circular()` is `[G]` on an exhaustive proof. The plan's K-ledger is graded per-row and **its audit had not completed at merge** — treat any `[H]` row as unconfirmed until §8 lands. `helix` is root-workspace-excluded and in **no CI workflow** `[G-absence]`, so every helix test here runs **only by hand**. Two PRE-EXISTING clippy findings (`walk_spectrum.rs:81`, `probe_mantissa_fill.rs:174`, new 1.97 lints) were deliberately **left alone** rather than sweeping files outside this change's scope. +**Process note — the merge race.** #922 merged mid-push, leaving five commits stacked on merged history; they were rebased onto main and reopened as #923, and #922's description was **restored** to describe only what it merged (two post-merge edits had wrongly attributed later content to it). A merged PR is finished — it cannot absorb follow-up work. + ## 2026-08-11 — lance-graph #921 (MERGED) — the reuse IS the process: the wind bearing-encode measured, and the doctrine that does not fit it - **Added.** `crates/helix/tests/bearing_encode_paths.rs` — a committed measurement of the two candidate `bearing → Signed360` encodes at N=65536. `.claude/knowledge/weather-normalized-substrate.md` §12.13. Board hygiene for #920 (its own arc + `LATEST_STATE` entries, plus the `Correction`/`Confidence` pair on #917). diff --git a/.claude/knowledge/weather-normalized-substrate.md b/.claude/knowledge/weather-normalized-substrate.md index 805b1567b..d07ce2b8e 100644 --- a/.claude/knowledge/weather-normalized-substrate.md +++ b/.claude/knowledge/weather-normalized-substrate.md @@ -1354,3 +1354,16 @@ never questioned; this is an **implemented, documented, Jirak-cited frame re-written in another language**. The `Consult, don't guess` rule in `CLAUDE.md` orders card → knowledge doc → board → source; nothing in that ladder says *grep the sibling crates for the thing you are about to build* — and it should. + +#### 12.18 — ⊘ audit correction to §12.16: a SPRITE moves for 2 bytes, not the field + +The verify pass on the evaluation plan (plan §8, run `wf_99d677e6-b45`) +regraded §12.16's Morton row: `morton_shift_motion_probe.rs` legA +rigid-translates a **24×24 `Sprite` within a 256×256 field** via one +`(dx,dy)` address-delta — bit-exact vs a ground-truth re-render, and genuinely +O(1) in sprite pixels — but *"2 bytes moves the whole field"* **overstates**: +2 bytes moves one sprite/tile; a whole-field advection is one `(dx,dy)` **per +tile**. The shift is also **toroidal** (`wrapping_add` per lane); the clipped +variant is a separate helper — EV-1 (evaluation plan §3) pins the clipped +semantics and masks disocclusion accordingly. legB/legC verified exact as +stated. diff --git a/.claude/plans/weather-substrate-evaluation-v1.md b/.claude/plans/weather-substrate-evaluation-v1.md index 4dcf08486..11a3fc668 100644 --- a/.claude/plans/weather-substrate-evaluation-v1.md +++ b/.claude/plans/weather-substrate-evaluation-v1.md @@ -4,7 +4,10 @@ > integration-lead, measurement-skeptic-analog sessions, and ANY session > executing an EV-* probe below. > -> **Status:** DRAFT pending the verify/attack audit pass (§8) → then ACTIVE. +> **Status:** ACTIVE (audited 2026-08-11 — §8). The 13-agent verify/attack pass +> ran: verify 22 CONFIRMED / 2 PARTIAL (K-21, K-23 corrected in place); +> attack **11 of 11 specs NOT SOUND** — every §3 spec below is the **v2, +> post-audit** version; §8 records what each v1 got wrong. > **Provenance:** the #915/#917/#920/#921/#922 arc + the post-#920 session > corrections (`weather-normalized-substrate.md` §12.1–§12.17). > **Grading:** `[G]` verified in committed code/test with file:line · @@ -70,9 +73,9 @@ Binding process rules for every EV-* execution: | K-18 | `ndarray::hpc::cascade::Cascade` = the Belichtungsmesser original: `calibrate`/`expose`→`Band`/`observe`→`ShiftAlert`/`recalibrate` | `ndarray/src/hpc/cascade.rs` | [G] | | K-19 | `symbiont/src/domino.rs` proves the AMX path: 4×4 Morton BF16 tiles, 16 SoA boards per AMX 16×16 tile GEMM, cascade feedback, real `TDPBF16PS` (Emerald Rapids); ALL SIMD via `ndarray::simd::*`; "ndarray has no Morton primitive" (consumer-side `morton4`) | `crates/symbiont/src/domino.rs` header + `run_poc` | [G] | | K-20 | `ndarray::hpc::splat3d` is a full 3DGS pipeline (feature-gated DIRECTORY): gaussian/project/raster/tile/spd3/sh/ply/depth_cascade; `TILE_SIZE = 16`; `depth_cascade` is ALREADY HHTL (`HhtlTier`, `HhtlAction`, `heel_reject_mask`) | `ndarray/src/hpc/splat3d/` | [G] | -| K-21 | Morton motion is O(1) in pixels: `dx=7 dy=5 bit_exact=1 motion_bytes=2 sprite_px=576`; interior residual 0; only the disocclusion strip new (`disocc_frac=0.1215`); comma fence holds (`three_gap_distinct=3`, `coprime_full_perm=1`) | `crates/helix/examples/morton_shift_motion_probe.rs` — RUN this session | [G-session] | +| K-21 | Morton motion is O(1) in pixels — **for a SPRITE, not the whole field** (audit correction: legA rigid-translates a 24×24 `Sprite` within a 256×256 field via one `(dx,dy)` address-delta, bit-exact vs ground-truth re-render; "2 bytes moves the whole field" in §12.16 OVERSTATES — 2 bytes moves one sprite/tile); interior residual 0; disocclusion strip only (`disocc_frac=0.1215`); comma fence holds (`three_gap_distinct=3`, `coprime_full_perm=1`). Note the shift is **toroidal** (`wrapping_add` per lane); the clipped variant is a separate helper | `crates/helix/examples/morton_shift_motion_probe.rs` — RUN this session | [G-session] | | K-22 | The perturbation phase is the DISCRETE Pythagorean comma: stride-4-over-17 coprime walk, integer, bit-exact, aperiodic, **0 stored bits** (address-derived); `17 = 4²+1` IS the comma; D-QUANTGATE rules it mandatory in quantized layers | `fire_forget_replay_probe.rs:70–73`, `probe_hhtl_intake_blindness.rs:410`, OGAR `CLAUDE.md` D-QUANTGATE | [G] | -| K-23 | 64×64 = 4096 cells = 4096 bit = 512 B = 64×u64 = the CANON node stride; `masked_popcount_batch(words, mask)` IS the Stockfish primitive; magic bitboards = the same LUT amortization | arithmetic identity + `ndarray/src/hpc/bitwise.rs` | [G] | +| K-23 | 64×64 = 4096 cells = 4096 bit = 512 B = 64×u64 = the CANON node stride; `masked_popcount_batch(words, mask)` IS the Stockfish primitive; magic bitboards = the same LUT amortization | arithmetic identity + **`ndarray/src/bitwise.rs`** (audit correction: NOT `src/hpc/` — `pub mod bitwise` at `lib.rs:290`; fns at `:280/:286/:201`) | [G] | | K-24 | AMX eats `&[u8]` planes directly: `int8_gemm_amx_tiled(a_u8: &[u8], b_i8: &[i8], c: &mut [i32], …)` | `ndarray/src/hpc/int8_tile_gemm.rs` | [G] | | K-25 | `ValueTenant::HelixResidue` = `U8×6 @ row_offset 112`; **zero writers, zero decoders** in the whole tree; no per-value-lane reading selector exists in the contract | contract `canonical_node.rs`; exhaustive grep (15 hits) | [G-absence] | @@ -89,134 +92,220 @@ Binding process rules for every EV-* execution: --- -## 3. TO TEST — the EV queue - -Every EV lands as a committed, re-runnable artifact (Rust test/example, or a -probe script + result JSON), with its pass criterion stated BEFORE the run. -Bars marked *(provisional pin)* are set relative to a measured baseline in the -same run — never an absolute magic number; first run pins them, and a pinned -bar must then be two-sided. - -### EV-1 — Advection IS a Morton shift (the §12.16 [S] falsifier) -- **Claim under test:** a wind-derived per-tile `(dx,dy)` Morton shift of - `2m_temperature(t)` predicts `t+1h` better than persistence. -- **Method:** 2 consecutive ERA5 timesteps; per tile (16×16 first, 64×64 - control) `(dx,dy) = round(mean 10m wind · 3600 s / 27.8 km)`; shift; residual - vs truth. At 0.25°/1 h, 10 m/s ≈ 1.3 cells — measurable, not sub-cell noise. -- **Pass (can-fire):** on tiles with `|wind| ≥ v_min`, shifted residual MAE - beats persistence MAE *(provisional pin: report the ratio; adopt only if - < 0.8)*. **Silence:** on calm tiles (`|wind| < v_min/2`) shift ≈ persistence - (ratio ∈ [0.9, 1.1]) — a shift that "wins" on calm air is an apparatus bug. -- **Fail →** §12.16's advection paragraph regraded; the wind lane stays a field, - not a transport operator. -- **Inertness:** `v_min` must be non-inert — sweep it; if the pass/fail verdict - is insensitive to `v_min` over [2, 10] m/s, the tile-mean wind is too smooth - and the probe must move to 64×64 tiles. - -### EV-2 — Wind lane encode at FIELD level (closes §12.13–§12.15) -- **Claim:** u8-palette azimuth + `circular()` preserves the angular-distance - structure of a REAL wind field; `linear()` measurably corrupts it. -- **Method:** ERA5 10m u/v → bearings → three encodes (nearest-`n`; - u8-palette-circular; u16-linear). For sampled point pairs: true angular - difference vs table distance. Spearman ρ per encode (Jirak-cited - significance), plus a wrap-corruption COUNT for `linear()` (pairs straddling - 0°/360° whose rank inverts). -- **Pass (can-fire):** palette-circular ρ within 0.02 of the u16 ground-truth - ranking AND `linear()` wrap-corruption count > 0 on real data (the defect - must actually fire on nature, not just on synthetic 359°/1°). - **Silence:** restricted to pairs within a 90° sector (no wrap), `linear()` ≈ - `circular()` — proves the corruption is THE WRAP, not table noise. +## 3. TO TEST — the EV queue (v2, post-audit — every v1 spec failed the attack pass; §8) + +Every EV lands as a committed, re-runnable artifact with its pass criterion +stated BEFORE the run. All bars below are pre-registered; a bar may be re-pinned +only via a recorded §8-style amendment, never silently. + +### EV-1 — Advection via per-tile Morton translate (v2) +- **Claim:** a wind-derived per-tile `(dx,dy)` translate of `2m_temperature(t)` + predicts `t+1h` better than persistence, **because of the wind direction**. +- **Method:** 2 consecutive ERA5 timesteps. Per tile: + `dx = round(u·3600 / (27 800·cos(lat)))` (zonal spacing SHRINKS with + latitude — the uncorrected v1 formula was wrong by up to 2.6× exactly where + winds are strong), `dy = round(v·3600 / 27 800)`. Shift semantics: + **clipped**, never toroidal (the probe's `wrapping_add` lanes would teleport + the antimeridian); scoring mask **excludes** disoccluded/inflow cells and + reports the masked fraction. +- **Pass (can-fire):** on tiles with `|wind| ≥ v_min`, wind-shift residual MAE + `< 1.0×` persistence MAE — one criterion. (The v1 "0.8" was an absolute + magic number violating §3's own preamble; **0.8 is now only D-register + adoption input**, not test pass.) +- **Silence (v2 — the v1 calm-tile band was an IDENTITY comparison: the shift + rounds to 0 for `|v| < 3.86 m/s`, so calm tiles compared the field to + itself):** on the SAME windy tiles, a **reversed** `(−dx,−dy)` and a + **90°-rotated** shift of identical magnitude must each score ≥ 0.98× the + persistence MAE — direction must be load-bearing, not "some translation + helps". The calm band survives only as a labelled **wiring canary** + asserting ratio == 1.0 exactly. +- **Inertness:** sweep `v_min ∈ {4, 6, 8, 10}` m/s (all above the rounding + floor 3.86); the can-fire margin must move with it. +- **Fail →** §12.16's advection paragraph regraded; the wind lane stays a + field, not a transport operator. + +### EV-2 — Wind-lane encode at FIELD level (v2) +- **Reference, pinned (the v1's most dangerous omission):** + `Δθ_true(P,Q) = min(|θ_P−θ_Q|, 360−|θ_P−θ_Q|)` in f64 from raw u/v, with an + in-run assertion `Δθ_true(359°, 1°) == 2°`. u16-linear is an ARM, never the + reference. +- **Arms:** nearest-`n`; u8-palette + `circular()`; u8-palette + `linear()` + (the defect arm); u16 + `linear()`. +- **Can-fire:** Spearman ρ(table distance, Δθ_true) for palette-`circular()` + exceeds palette-`linear()` by a margin that must be positive with a + Jirak-honest CI; additionally count **discordant pairs-of-pairs involving a + wrap-straddling pair** (the v1 "count > 0" was implied by sampling design — + the `elimination_rate() > 0` house defect verbatim; the v2 quantity is the + measured discordance GAP between the two tables, direction pre-registered). +- **Silence (v2 — the v1 "90° sector" half was an ARITHMETIC TAUTOLOGY: + `circular == linear` identically for `|a−b| ≤ 128`, and a 90° sector spans + 64 indices):** S1 = an exhaustive **unit test in `distance.rs`**, labelled + as carrying ZERO field evidence: `circular == linear` for all `|a−b| ≤ 128`, + `≠` for all `|a−b| > 128`. S2 (field): on pairs whose palette indices differ + by ≤ 64, the two tables' distances are IDENTICAL by arithmetic — assert it + as the wiring canary it is, not as evidence. +- **Inertness:** an injected 10-bit azimuth truncation must push + palette-`circular()`'s ρ measurably down (the disable-run). - **Fail →** the palette-azimuth option is not field-adequate; §12.15's [S] adoption question closes NO. -### EV-3 — Floor-sensitivity sweep (feeds operator decision D-1) -- **Claim:** every floor-dependent verdict (the 0.25 K flip) is stable inside - the plausible obs-error range. -- **Method:** re-run `p1_ci_vs_floor` over a floor grid [0.1 … 2.0] K per - variable; deliverable = the flip-point (floor at which Fisher-Z's interior-CI - exceedance crosses 1 %) per variable. -- **Pass:** flip-points are sharp (not straddling the whole range) and reported - with the sat-% column; the OUTPUT is the decision input for D-1, so the pass - bar is completeness, not a verdict. -- **Vacuity guard:** the sweep must show BOTH regimes (some floor where - Fisher-Z fails, some where it doesn't) — a sweep entirely in one regime - cannot locate a flip-point and must widen its grid. - -### EV-4 — Saturation-window widening (feeds D-2) -- **Method:** sweep the percentile window {0.4–99.6, 0.2–99.8, 0.1–99.9, - 0.02–99.98}; per window: sat-%, interior-CI median/max vs the K-9 floors. -- **Pass:** the tradeoff curve is monotone in the expected directions (sat ↓, - interior CI ↑ as the window widens) — a non-monotone curve means the - apparatus is wrong, not the physics. Decision itself is D-2. - -### EV-5 — U-shaped variables: the shape rule's OTHER half -- **Claim (from `E-THE-TRANSFORM-MUST-MATCH-THE-DISTRIBUTION-SHAPE-1` [S]):** - Fisher-Z should WIN on bound-massed variables (`total_cloud_cover`, - `sea_ice_cover`). -- **Method:** identical P1 pipeline on both variables. -- **Pass (two-sided by construction):** Fisher-Z shows better bucket economy / - interior CI than linear on these — while K-9 already shows the OPPOSITE on - temperature. Either outcome is informative: win → the shape rule promotes - [S]→[H]; loss → the rule is falsified and the epiphany regrades. - -### EV-6 — Harness re-expression on the shipped frame (retires the Python) -- **Claim:** the P1/P2 pipeline expressed as consumers of the SHIPPED frame - (`perturbation_sim::RollingFloor` or `helix::RollingFloor` + `jc` - reliability + `CascadeKey`/`morton48` addressing) reproduces the committed - numbers. -- **Equivalence gate (exact, not approximate):** 0.848 % / 0.820 % / 95.65 % - (P1) and 0.9997 / 0.857–0.875 incl. T×Td = 0.999556 (P2) to 1e-4 relative - from the same fixture. Python stays as provenance (the repo's - `p1_noise_floor.py` pattern), Rust becomes the measurement of record. -- **Vacuity guard:** the Rust harness must NOT share code with the Python - (independent implementation is the point); assert on the committed JSON - values, not on freshly-computed Python output. - -### EV-7a — 16k×16k 3DGS top-k scale run (operator-named) -- **Claim:** the shipped `splat3d` pipeline + HHTL depth cascade handles a - 16 384² canvas = 1024×1024 = 1 048 576 tiles with top-k selection. -- **Method:** synthetic-or-ERA5-derived gaussian population; `TileBinning` at - 1M tiles; `cascade_blocks` + `heel_reject_mask` prune rates; - top-k via `hamming_top_k_raw`/cascade bands. -- **Pass:** completes within a recorded time/memory envelope *(provisional - pin — first run records, second run gates)*; heel-reject rate is neither 0 % - nor 100 % (a pruner that fires on everything or nothing is the - `closed_class_guess` defect). -- **NOTE:** `splat3d` is feature-gated — the run must state the feature flags - and host (AMX availability changes the path). - -### EV-7b — Comma anti-moiré at tile scale (the D-QUANTGATE falsifier) -- **Claim:** comma-phase (stride-4-over-17) perturbation shows no grid-locked - aliasing where a REGULAR stride does. -- **Method:** perturb a uniform field per tile with (a) regular phase - (`addr % k`), (b) comma phase; measure grid-alignment energy (spectral peak - at the tile frequency, or lag-k autocorrelation at tile pitch — NOT plain - lag-autocorrelation, which `mu_hydration_probe` documents as the WRONG - instrument). -- **Pass (two-sided, mandatory):** regular stride MUST show the peak - (can-fire) AND comma must not (silence). If the regular control does not - alias, the fixture cannot falsify and must be re-scaled. - -### EV-8 — Jirak effective-n for the P2 correlations -- **Claim:** the P2 correlations survive weak-dependence-honest significance. -- **Method:** estimate spatial autocorrelation length of the anomaly fields → - effective n ≪ 1 038 240 → re-state P2 significance at Jirak's `n^(p/2−1)`; - feeds P5 (`drift_sigma` under autocorrelation). -- **Pass:** stated effective-n with the derivation; correlations re-graded - against it (expected to survive — but "expected" is not evidence). - -### EV-9 — Commit the K-12/K-13 measurements (Wave 0 — no data needed) -- Re-create the latitude-band error test and the palette-azimuth per-band - measurement as committed `crates/helix/tests/` with tolerance assertions on - the recorded numbers (0.112°/3.332°/0.99–1.02×/0.352°), disable-verified. -- **Pass:** green + each assertion red under an injected defect. - -### EV-10 — Second timestep + season for P1 ([H]→ promotion path) -- **Method:** winter timestep (2021-01-15 12:00 UTC) + one more variable - through the full P1-CI pipeline. -- **Pass:** same qualitative ordering as K-9 (economy failure at plausible - floors). **Fail →** `E-THE-TRANSFORM-MUST-MATCH-…-1` regrades; every §12.11 - conclusion becomes timestep-conditional. +### EV-3 — Floor flip-points, computed EXACTLY (v2) +- **v1 was a grid search whose only guard was pre-satisfied by committed data.** + The exceedance-vs-floor curve is the occupancy-weighted survival function of + interior bucket CI half-widths, so the 1 % flip-point **IS the 99th + percentile of `ci[idx][interior]`** — compute it in closed form per variable + (sort interior buckets by CI desc, cumulate occupancy/N, report the crossing + CI + the number of buckets and mass fraction determining it). No grid, no + step size, no undefined "sharp". +- **Apparatus control (v2):** the LINEAR arm's CI is `(hi−lo)/512`, a constant + — its flip is a single threshold at 0.09412 K and it can never show two + regimes. That is expected behaviour of the apparatus, documented as the + control; the two-regime guard applies to the **Fisher-Z arm only**. +- **Output:** per-variable flip-point table → the D-1 decision input. The + sweep range is explicitly provisional-until-D-1 (v1 presupposed the range + D-1 exists to pin — circularity, now named). +- **404 discipline:** fixture availability probed per variable FIRST; a fill + array is never saved as a fixture. + +### EV-4 — Saturation-window sweep (v2) +- **Method:** windows {0.4–99.6, 0.2–99.8, 0.1–99.9, 0.02–99.98}. Report BOTH + bucket-0/255 occupancy AND true out-of-window mass — the v1 conflated them + (`sat%` counts legitimately in-range points in the edge buckets). +- **Pass (v2 — v1's "monotone" admitted a DEAD KNOB: a constant curve is + monotone in both directions, and a window parameter that never reaches the + code yields exactly that):** (i) linear CI **strictly** increasing AND + `ci(0.02–99.98)/ci(0.4–99.6)` equals the corresponding `(hi−lo)` ratio to + 1e-12 — the proof the knob reached the code; (ii) true out-of-window mass + falls ≈ proportionally (0.8 % → 0.04 % nominal); (iii) Fisher-Z arm + reported, and a non-monotone Fisher-Z curve is a **FINDING to investigate** + (both `scale` and `zlo/zhi` move with the window) — not auto-assigned to + "apparatus wrong" (the v1 wording immunized the expectation against + falsification). + +### EV-5 — U-shaped variables (v2 — the v1 fixture could not exist and its pipeline destroyed the phenomenon) +- **Fixture gate:** `total_cloud_cover` is a KNOWN 404 at the pinned timestep + and `sea_ice_cover` is in NEITHER fetcher. Resolve a timestep where both + chunks exist, add both to a fetcher, record `time_index` + nonfinite counts + in a manifest, abort LOUDLY if absent. (v1 placed this in Wave 1 as if one + re-fetch sufficed.) +- **Pipeline (v2):** quantize the **RAW [0,1] field** — the zonal-anomaly step + destroys the bound-massed shape the claim is about, and Kelvin floors are + meaningless for fractions. Floors in native units {0.01, 0.05} fraction. +- **Metric:** interior-CI survival + `effective_buckets` (exp-entropy of + occupancy) — never MAE (the banned round-trip metric; the v1 "bucket + economy" had no operational definition and one natural reading was MAE). +- **Premise correction (v1's "two-sided by construction" collapsed):** in the + CI frame K-9 does NOT show linear "winning" on temperature (sat 0.848 % vs + 0.820 % — nearly equal; only the 0.25 K interior CI discriminates). The + contrast is re-based: prediction = Fisher-Z interior-CI advantage on raw + bound-massed fields at fraction-scale floors, with temperature-at-0.25 K as + the opposing case. Win → shape rule [S]→[H]; loss → the epiphany regrades. + +### EV-6 — Rust harness equivalence (v2 — the v1 gate was UNSATISFIABLE) +- **Split deterministic from stochastic (the v1 demanded 3-sig-fig prose + constants "to 1e-4 relative" — the house rounding incident rebuilt inside + the gate):** + - **P1 (deterministic):** assert the FULL-PRECISION committed values + `0.008476845430728927`, `0.008202342425643397`, `0.956511018646941`. + The 3-sig-fig figures are prose, never gate constants. + - **P2 (Monte-Carlo — numpy PCG64 seed 7, 200 000 pairs; a Rust port cannot + reproduce the stream):** Rust draws its OWN seeded pairs, K ≥ 20 + resamples, gate `|mean_rust − committed| < 3·sd_rust`, sd printed. +- **Frame pinned:** `helix::RollingFloor` (`quantize`/`bucket_center`) for the + palette; `jc::reliability` for stats. The v1 named "`perturbation_sim` OR + `helix` `RollingFloor`" — two different types, one of which (the streaming + meter) structurally cannot express the bucket metric. +- **Participation canary (v2 — nothing in v1 observed that the frame ran):** a + disable-run injecting a shifted floor must move the P1 numbers; a harness + that computes the numbers beside an unused `RollingFloor` fails it. +- **Anti-self-comparison:** expected side = committed JSON; actual side = + recomputed from the fixture (digest recorded) through the Rust path. Both + sides reading the same JSON is the forbidden route, now named. + +### EV-7a — 16k×16k 3DGS top-k (v2) +- **Fixture pin:** seeded generator (fixed RNG seed, gaussian count, scale + distribution, camera pose), digest recorded; the envelope gate compares runs + of the SAME digest only, and is **host-conditional** (CPU model + AMX + availability recorded — the spec's own NOTE said the path changes, so an + unconditional gate fails for reasons unrelated to code). +- **Top-k correctness (v1 named top-k in the claim and never tested it — the + primary vacuous route):** pin `k`; assert the cascade top-k equals a + brute-force full-sort reference on a non-trivial subset; assert it DIFFERS + from a stubbed/garbage control (can-fire). +- **Heel-reject:** the fixture places pre-stated fractions in/out of frustum; + the reject rate is asserted within a band DERIVED from the fixture spec + (two-sided) — v1's "∉ {0 %, 100 %}" was author-satisfiable by construction. +- **Execution proof:** instance counts must equal an independently computed + tile-touch count on a subsample — `splat3d` is feature-gated, and "the mode + never reached the code" is this workspace's measured incident. + +### EV-7b — Comma anti-moiré (v2) +- **Instrument, pinned to ONE:** 2-D DFT; statistic = energy in the tile-pitch + bin / median energy over non-DC bins. The v1's "or lag-k autocorrelation" + alternative is DELETED — the `mu_hydration_probe` objection it cited applies + to it. +- **Arms, three (v1's two could only prove divisor-vs-coprime arithmetic):** + (a) regular divisor stride; (b) the comma walk; (c) a DIFFERENT coprime + stride. Pre-registered: (a) aliases, (b) and (c) do not — the claim under + test is D-QUANTGATE's *coprime requirement*, explicitly NOT a 17-uniqueness + claim. **Wording fix:** the comma walk is PERIODIC with period 17 (a + permutation of Z₁₇); "aperiodic" means incommensurate with the 16-pitch — + K-22's phrasing is loosened accordingly. +- **Bars, pre-registered:** regular ratio ≥ R_hi, comma/coprime ≤ R_lo, with + R_hi ≥ 10·R_lo pinned before the run. +- **Silence-side fixture guard (v1 guarded only the can-fire half):** the + comma arm's total perturbation energy must be shown nonzero — "no peak" + must not be "no signal". + +### EV-8 — Stability of the P2 estimator (v2 — re-scoped from a rubber-stamp) +- **v1 could not fail:** "state effective-n and re-grade" is always + achievable, at ρ ≈ 0.9996 any n_eff over a few dozen "survives", and the + named n (1 038 240) was the WRONG n — the P2 estimator drew **200 000 + independent uniform index pairs** (`p2_probe.py:42,48`), not the grid. +- **v2:** K ≥ 20 seed-resamples of the P2 estimator → CI on each ρ. + Pre-registered: n_eff ≈ n for independent uniform draws is the EXPECTED + finding (so that outcome is a result, not a wiring alarm); n_eff ≪ n would + indict the estimator, not the field. State plainly that ρ(d_sh, truth) is a + **codec-consistency statistic** (deterministic monotone quantizer of the + same z), so the deliverable is CI width and cross-seed stability — not a + p-value dressed as inference. Jirak's `p` pinned in the artifact or the + Jirak citation dropped for the resampling CI. + +### EV-9 — Commit the orphan measurements (v2 — two of four v1 assertions were implied by their own subject) +- **Dropped as near-tautologies:** the bare `0.99–1.02×` equal-budget ratio + (both arms have ≈ equal step size BY CONSTRUCTION — 127 vs 127.5 levels) + and the bare `0.352°` mean (= step/4 arithmetically). +- **v2 assertions, tolerances pinned from the ANALYTIC law BEFORE the run + (the original apparatus was deleted; recorded numbers are cross-checks, not + gospel):** + (i) anti-vacuity — the 7-bit+sign and 8-bit arms produce DIFFERENT bytes on + a stated minimum fraction of samples (proves two code paths exist); + (ii) the equal-budget ratio with an ASYMMETRIC disable-run (perturb only the + sign-split arm → ratio must leave the band; a symmetric wiring bug yields + exactly 1.000 forever and the v1 could not see it); + (iii) the SPREAD, not two points: pole-band mean / equator-band mean ≥ 20× + (the finding IS the ratio; independent point assertions can drift together); + (iv) comparative K-13: palette-`circular()` mean < nearest-`n` mean on the + SAME sample; + (v) sampling scheme pinned: N, latitude stratification, azimuth sweep. + +### EV-10 — Second season (v2 — the v1 could pass on STALE SUMMER BYTES) +- **Fetcher fix first:** both fetchers gain an explicit `--t` argument and + write `fixture//.npy`; the skip-if-exists guard keys on the + timestep; the probe READS the manifest and asserts its `time_index`, + emitting it into the result JSON. A run whose fixture cannot prove its own + timestep reports NO-VERDICT. (v1: `fetch_bg.py:10` hardcodes `t`, `:15` + skips if the file exists — a winter "run" would happily re-measure summer. + Also protects EV-6, whose equivalence gate depends on the summer fixture a + shared directory would have overwritten.) +- **One factor at a time:** Run A = SAME variable, winter timestep. The "one + more variable" is a separate run, named in advance (`10m_u_component`, + availability already proven). Three-factors-at-once made a v1 fail + unattributable. +- **Compared quantity, defined:** the EV-3 closed-form flip-point must agree + across seasons within a pre-registered factor of 2 — v1's "same qualitative + ordering" named an ordering the pipeline does not produce (at floors ≥ 0.5 K + both arms read identically 0.0). --- @@ -242,3 +331,54 @@ is the probe, not more synthesis.** | D-5 | helix CI wiring (workspace-excluded, no gate anywhere) | K-8 | | D-6 | Harness language ruling — adopt EV-6's Rust as measurement-of-record | EV-6 | + +--- + +## 8. AUDIT RECORD — the verify/attack pass (2026-08-11, run `wf_99d677e6-b45`) + +13 agents (7 Sonnet source-verifiers, 6 Opus falsifier-auditors), 13/13 +completed, 0 errors, ~4.4 M subagent tokens, 165 tool calls, ~20 min. + +### Verify: 24 claims → 22 CONFIRMED, 2 PARTIAL (both corrected in §1) + +- **K-23 PARTIAL** — functions confirmed with exact signatures, but at + `ndarray/src/bitwise.rs` (`lib.rs:290`), NOT `src/hpc/bitwise.rs`. Path fixed. +- **K-21 PARTIAL** — legB/legC exact; legA is a **SPRITE translate within a + 256×256 field**, not a whole-field shift; the shift is **toroidal** + (`wrapping_add` per lane) with a separate clipped helper. §12.16's "2 bytes + moves the whole field" overstates; corrected in §1 and in the knowledge doc. +- Notable confirmations beyond the row text: K-25's absence claim was + re-proven independently (zero `value_offset(ValueTenant::HelixResidue)` + callers anywhere; `mailbox_scan.rs:237-240` documents the Signed360 distance + tier as "named; wired as they land"); K-9/K-10's committed JSON matches to + full precision. + +### Attack: 11 specs → 10 VACUOUS, 1 UNDERSPECIFIED. Zero SOUND. + +Every v1 spec failed. The full per-spec findings are in the run output; the +§3 v2 specs above fold in every fix. The recurring defects, by house name: + +| defect class | where it appeared | +|---|---| +| identity/tautology as a "silence half" | EV-1 (calm tiles = shift rounds to 0), EV-2 (90° sector: `circular == linear` for `\|a−b\| ≤ 128` by arithmetic) | +| `count > 0` implied by sampling design (`elimination_rate()` verbatim) | EV-2 | +| guard pre-satisfied by committed data | EV-3 (the two-regime guard) | +| monotone-but-dead-knob pass route | EV-4 (constant curve is monotone; a knob that never reaches the code yields one) | +| fixture cannot exist / pipeline destroys the phenomenon | EV-5 (`total_cloud_cover` 404 at pinned t; `sea_ice_cover` in neither fetcher; zonal-anomaly step erases bound-mass; Kelvin floors on fractions) | +| unsatisfiable gate constants (the rounding incident, rebuilt) | EV-6 (3-sig-fig prose "to 1e-4 relative"; Monte-Carlo numbers under an "exact" gate) | +| claim names a capability no criterion touches | EV-7a (top-k) | +| author-satisfiable anti-vacuity | EV-7a (heel-reject ∉ {0,100} %) | +| self-contradicting instrument; missing third arm | EV-7b (the lag-k alternative was the instrument its own citation bans; two arms only prove divisor-vs-coprime) | +| pass criterion that cannot fail + wrong n | EV-8 ("state and re-grade"; n = 200 000 pairs, not 1 038 240 gridpoints) | +| assertion implied by its own subject | EV-9 (equal-budget ratio; 0.352° = step/4) | +| stale-fixture pass route + three factors at once | EV-10 (`fetch_bg.py` hardcodes `t`, skips-if-exists — a winter run re-measures summer bytes) | +| physical-constant error creating a false-fail route | EV-1 (`cos(lat)` zonal spacing, up to 2.6× where winds are strong) | + +### The meta-finding + +The v1 specs were written by the same author who had just spent one document +(§12.10–§12.17) being corrected for exactly these failure modes, citing the +falsifiability rule throughout — and still went **0 for 11**. Pre-registration +review by independent adversarial readers is load-bearing, not ceremony: +naming a discipline is not applying it, and the author of a spec is +structurally the wrong person to find its vacuous pass routes.