Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .claude/board/AGENT_LOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
36 changes: 36 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
11 changes: 11 additions & 0 deletions .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
12 changes: 12 additions & 0 deletions .claude/board/PR_ARC_INVENTORY.md
Original file line number Diff line number Diff line change
@@ -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).
Expand Down
13 changes: 13 additions & 0 deletions .claude/knowledge/weather-normalized-substrate.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Loading