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
89 changes: 89 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,92 @@
## 2026-08-12 — E-THE-DISPLACEMENT-FILTER-ATE-THE-STRANDED-STRATUM-1

**Status:** FINDING `[G]` — W6 RUN (`comet_tail_w6.py`/`.json`), audited
(raw predictors committed per storm after a self-caught gap), both a
sample-composition finding and a genuine model-level negative result.

**The mechanism-level result, stated first because it is the load-bearing
one.** Report §10.2's dipole vector-sum model (`D = c_geo·P_geo +
c_bow·P_bow`, a background-high neighbor predictor plus a relative-motion
bow-wave predictor) was fit on CT-F14's 19 stored storms and **VOIDED by its
own pre-registered anti-vacuity control**: single-geo R²=−0.104 (worse than
predicting the mean); the permuted-P_bow control R²=−0.071 and the
rotated-90° control R²=−0.062 BOTH exceed `single-geo + 0.03 = −0.074` — two
deliberately wrong references score as well as or better than the real
predictor. This is not a marginal miss — it is the anti-vacuity control
doing exactly its job: rejecting a fit that has nothing to identify.

**Checked before concluding it was a clean negative, per the standing
measurement-skeptic discipline: no implementation bug found in the FIT
itself, but a sign convention AND a units error were found in the
NARRATIVE around it (codex + CodeRabbit P2/Major on PR #940, both real,
fixed before merge).** One storm was independently re-fetched and hand-
audited; extended to the full sample by committing the raw
`D`/`P_geo`/`P_bow`/`A_H`/`d_H`/`v_rel_ms` per storm. Every value is
physically sane (`A_H > 0` always, `d_H` inside the 600–2500 km annulus
always, `v_rel` 2.8–27.9 m/s).

**Sign:** `spine()`'s raw fit coefficient points toward the storm's HIGH
side (the gradient of increasing residual pressure), while `P_geo`/`P_bow`
both point toward the LOW side by construction — the exact convention
`low_pole_bearing()` makes explicit via its own `(ph + π) % (2π)` flip. `D`
is correctly `−spine(...)`; the first draft used the unflipped `coef`.
Corrected: **`c_geo = +0.407` (the physically predicted positive sign —
CORRECT)**, `c_bow = −0.0006` km⁻¹ (predicted positive — **wrong sign, but
small**). Verified algebraically and numerically that this flip changes
NOTHING about R² or the B0/B1 VOID verdicts (OLS is odd-symmetric in the
fit target) — only the coefficient signs and the sentence describing them.

**Units:** `D`/`P_geo` are [Pa/km]; `P_bow` is [Pa] — `c_geo` is
dimensionless, `c_bow` carries km⁻¹, and OLS coefficients rescale inversely
under column rescaling while R²/fitted-values stay fixed. **Raw `|c_bow|`
was never valid evidence of "no measurable weight"**, and comparing
`|P_bow|` to `|D|` directly (147×, as first reported) compounded the same
mistake — Pa is not comparable to Pa/km at all. The dimensionally valid
measure is the fitted CONTRIBUTION `|c_bow·P_bow|` against `|D|`, both in
Pa/km: mean `|D|`=0.745, mean `|c_geo·P_geo|`=0.186 (25 % of `|D|`), mean
`|c_bow·P_bow|`=0.068 (9 % of `|D|`) — the geo contribution is ~2.7× the
bow contribution, MODEST rather than "no weight," and both remain
consistent with the R²<0 finding that neither predictor meaningfully
explains `D`'s variance.

**The finding that generalizes past this one probe: an anti-vacuity control
can be voided by SAMPLE COMPOSITION, and the reason is arithmetic, not
physics.** B3's stranded-vs-moving stratification (`|v_storm| < 8 m/s`,
the report's own named test of the "stranded-rescue" reading) came back
**n=0 for the stranded stratum** — every one of the 19 storms has
`|v_storm| ≥ 12.54 m/s`. This is not a null result about storm motion; it is
a DIRECT ARITHMETIC CONSEQUENCE of CT-F14's own qualifying filter
(`displacement_km ≥ 250` over the 6 h window): `250 km / 6 h = 11.574 m/s`,
a hard floor on `|v_storm|` for ANY storm admitted to the sample. **A filter
built to select clearly-moving storms for a displacement-scoring test
silently and permanently excludes the storms a LATER, differently-motivated
test (stranded-rescue) needs to see.** The stranded-rescue claim is
therefore **UNTESTABLE on this sample, not refuted** — the untestability was
knowable from the filter's own arithmetic before a single storm was fetched,
and wasn't checked until B3 came back empty.

**Consequence, stated as a reusable rule:** before scoring ANY new
hypothesis against an EXISTING filtered sample, check whether the sample's
own selection criterion is compatible with the new hypothesis's own
discriminating variable — arithmetically, not by running the probe and
discovering an empty stratum after the fact. A filter selected for one
purpose (fast, clearly-displaced storms, easy to center-find and score
against displacement) is not neutral with respect to every future question;
it is a specific cut through the underlying population, and every later
probe inherits that cut whether or not it is the cut that probe needs.

**Consequence for the report and for CT-F17.** The report's §10.2 vector-sum
model, AS SPECIFIED, is disconfirmed on this sample — not "unproven," not
"needs more data" in the ordinary sense, but VOID by its own control. CT-F17
(the fresh-sample verdict, gated on W6's result + an independent adversarial
audit) is now moot **for this form of the model** — a fresh-sample test of a
model that already fails identifiability on the stored sample is not the
next useful step. Any REVISED form of the vector-sum model (multiple
neighbors, a nonlinear bow term, per-storm coefficients) would need its own
W6-shaped mechanistic test before earning a CT-F17 slot; a genuine
stranded-rescue test needs a sample built without (or explicitly retaining
slow storms despite) a displacement floor.

## 2026-08-12 — E-ON-A-GOLDEN-LATTICE-LOCALITY-IS-FIBONACCI-MEMBERSHIP-1

**Status:** FINDING `[G]` — W5 RUN (`spiral_adi_probe.py`/`.json`) + a
Expand Down
68 changes: 68 additions & 0 deletions .claude/board/PR_ARC_INVENTORY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,71 @@
## 2026-08-12 — the W6 dipole-deconvolution RUN lands — VOID by its own anti-vacuity control, plus a reusable sample-composition lesson (PR pending)

- **Added.** `comet_tail_w6.py`/`.json` — the report §10.2 vector-sum
model (`D = c_geo·P_geo + c_bow·P_bow`) fit on CT-F14/F16's 19 stored
storms, per `weather-w-probes-v1.md` §3's pre-registered bars. New
epiphany `E-THE-DISPLACEMENT-FILTER-ATE-THE-STRANDED-STRATUM-1`.
- **Locked — B0 VOIDS, and the model has nothing to identify.**
Single-geo R²=−0.104 (worse than the mean); both anti-vacuity controls
(permuted P_bow, P_bow rotated +90°) score at −0.071/−0.062, both
clearing the ≤`single-geo + 0.03` bar's ceiling of −0.074. B1/B2
correctly report VOID (B0 failed), not their own numbers, per the
pre-registered rule.
- **Locked — checked for an implementation bug before calling it a clean
negative, per the standing measurement-skeptic discipline; found none
in the fit — but found a sign convention error AND a units error in
the FIRST DRAFT's narrative (codex + CodeRabbit P2/Major on PR #940,
both fixed before merge).** One storm independently re-fetched and
hand-audited (t0=54358); extended to all 19 by committing the raw
predictors per storm (the first run shipped only derived bearings — a
self-caught audit gap, fixed and re-run before any reviewer needed to
find it). **Sign:** `spine()`'s raw coefficient points toward the
storm's HIGH side (increasing residual), while `P_geo`/`P_bow` both
point toward the LOW side by construction — `D = −spine(...)` matches
the same `(ph+π)` convention `low_pole_bearing()` already uses.
Corrected: `c_geo = +0.407` (physically predicted positive — CORRECT,
the first draft's "−0.41, wrong sign" had the polarity backward);
`c_bow = −0.0006` km⁻¹ (predicted positive — wrong sign, small).
Verified algebraically and numerically that the flip changes NOTHING
about R²/B0/B1 (OLS is odd-symmetric in the fit target) — only the
coefficient signs and their description. **Units:** `D`/`P_geo` are
Pa/km, `P_bow` is Pa, so `c_geo` is dimensionless but `c_bow` carries
km⁻¹ — raw `|c_bow|` (or the first draft's `|P_bow|`/`|D|` ≈ 147×
comparison) was never valid evidence of "no measurable weight," since
OLS coefficients rescale inversely under column rescaling. The
dimensionally valid measure is the fitted contribution
`|c_bow·P_bow|` vs `|D|`, both Pa/km: mean `|D|`=0.745, geo
contribution 25 % of `|D|`, bow contribution 9 % of `|D|` — modest,
not "no weight," and consistent throughout with R²<0.
- **Locked — the reusable lesson: B3's stranded stratum is EMPTY (n=0),
and the reason is arithmetic, not physics.** `min(|v_storm|) = 12.54
m/s` across all 19 storms — CT-F14's own qualifying filter
(`displacement_km ≥ 250` over 6 h) mathematically implies `|v_storm| ≥
250 km / 6 h = 11.574 m/s` for ANY admitted storm. **A filter selected
for one purpose (fast, cleanly-displaced storms) is not neutral for a
LATER, differently-motivated test (stranded-rescue) — the
incompatibility is knowable from the filter's own arithmetic before a
single fetch, and wasn't checked until the stratum came back empty.**
Filed as a reusable pre-flight check for any future probe reusing an
existing filtered sample.
- **Locked — consequence for CT-F17.** The vector-sum model AS
SPECIFIED is disconfirmed on this sample, void by its own control —
not "unproven," not "needs more data." CT-F17's gate (W6's result +
independent adversarial audit) is now moot **for this form of the
model**: a fresh-sample verdict on a model that fails identifiability
on the stored sample is not the useful next step. A REVISED model
form needs its own W6-shaped mechanistic test first; a genuine
stranded-rescue test needs a sample built without the displacement
floor.
- **Docs.** `weather-w-probes-v1.md` §3 gets the full RUN section.
`STATUS_BOARD.md` D-W6 moves from Queued to the RUN verdict.
- **Confidence.** High — every figure re-derived from the committed
JSON (which now carries the raw per-storm predictors, not only the
fit summary) or from a live re-fetch audit, not asserted from the
first run's output alone.

**Status:** RUN complete; awaiting a PR to land these results.
Probe + docs — zero product code.

## 2026-08-12 — lance-graph #932 (MERGED) — the golden-ratio index floor + the temperament mechanism (merged before its own review findings could be addressed — see #933)

- **Added.** The operator-ruled golden-ratio index floor (convergent index
Expand Down
2 changes: 1 addition & 1 deletion .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Wave 1 = parallel, no operator gate beyond go-ahead; gated rows named.
|---|---|---|---|---|
| D-W5 | Spiral-ADI anisotropy (v2, full-band control, V-matched iterations, bump 3.35σ from mask) | 1 | **B2 FAIL / B3 VOID CONFIRMED / B4 INCOMPLETE** — B2: real diffusion resolved, aniso 1.5251 vs 1.25 bar, clean baseline 1.0046, operator contributes ~0.52. B3: family A 99.68 % + family B 99.56 % (both link families, QUALIFYING population n=4.78M out of the headline lattice N=7.65M, not the 62k sub-sample) land on a pure Fibonacci offset — dominated by the two discovered strides 2584=F(18)/4181=F(19) respectively. B4: downgraded to a DESCRIPTIVE reading over n=8–17 only — n=19 was dropped without pre-authorization, bar not satisfied, stays open | domino.rs gather-design claim REFUTED at this test point (v1's "unblocked" was the same inert-operator artifact that also drove B2's false PASS); `E-ON-A-GOLDEN-LATTICE-LOCALITY-IS-FIBONACCI-MEMBERSHIP-1` strengthened, third dated update; B4's n=19 remains an open follow-up |
| D-W2sA | Golden-vs-grid pairing on real cos-lat metric (zero-ties G1, CV G2) | 1 | **RUN — G1 VOID, G2/G4 FAIL (control degenerate: two identical translated grids are symmetry-uniform, CV ~1e-12 — cannot lose any evenness comparison; diagnosed via smoke test, run as-specified, `E-A-CONTROL-THAT-CANNOT-LOSE-IS-NO-CONTROL-1`)** | honest falsifier for evenness DEFERRED (offset/rotation-varied or spacing-mismatched control); §10.5 properties 1–3 untouched |
| D-W6 | Two-component deconvolution (geo + bow, global lstsq, 38 eqs / 2 params; B3 = stranded stratification via v_rel) | 1 | Queued | dipole vector-sum identification; F17 gate |
| D-W6 | Two-component deconvolution (geo + bow, global lstsq, 38 eqs / 2 params; B3 = stranded stratification via v_rel) | 1 | **RUN COMPLETE — B0 VOID** (single-geo R²=−0.104, worse than the mean; both anti-vacuity controls score ≥ the ceiling — the model has nothing to identify); B1/B2 correctly report VOID per rule; B3 stranded stratum EMPTY (n=0 — a structural consequence of CT-F14's displacement≥250km filter implying `\|v_storm\|≥11.57 m/s`, not a physics finding) | vector-sum model DISCONFIRMED as specified on this sample; CT-F17 gate now moot for this model form — a revised model needs its own W6-shaped test first; `E-THE-DISPLACEMENT-FILTER-ATE-THE-STRANDED-STRATUM-1` |
| D-W2sB | α-window sweep β∈[0.85,1.15] | gated (W2s-a) | Queued | corridor α discriminator |
| D-W7 | Corridor two-regime α field probe | gated (W6) | Queued | §10.3 physics |
| D-CT-F17 | FRESH-sample verdict (1959–1979, N=70 candidates, V-test p<0.05 ∧ R̄≥0.35; independent adversarial spec audit MANDATORY before bars commit) | gated (W6 + audit) | Queued | the directional claim's verdict path |
Expand Down
50 changes: 50 additions & 0 deletions .claude/plans/weather-w-probes-v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,56 @@ Checkpoint after every storm; resume skips completed `t0`.

---

### RUN, 2026-08-12 (`comet_tail_w6.py` / `.json`) — B0 VOID, and the vector-sum model does NOT fit; the stranded stratum is EMPTY by construction

| bar | verdict | measured |
|---|---|---|
| **B0 CONTROLS** | **VOID** (own pre-registered rule) | single-geo R²=**−0.104**; permuted-P_bow control R²=**−0.071**; rotated-90° control R²=**−0.062** — both controls exceed `single-geo + 0.03 = −0.074` |
| **B1 IDENTIFIABILITY** | VOID (B0 failed) | joint R²=**−0.086** vs best-single R²=−0.104, margin +0.018 (needed +0.10) |
| **B2 SIGN** | VOID (B0 failed) | `c_geo = +0.407` (predicted positive — **correct sign**); `c_bow = −0.0006` km⁻¹ (predicted positive — **wrong sign**) |
| **B3 residual resultant** (descriptive) | overall: R̄=**0.153**, μ=−2.3°, p=0.646 — *below* the n=19 uniform-expectation floor (√π/2√19 ≈ 0.203); **stranded (<8 m/s): n=0**; moving (≥8 m/s): n=19, identical to overall | no clustering at all; stranded stratum **structurally empty** |

**Every single-predictor model already fails on its own** — geo alone R²=−0.104, bow alone R²=−0.147, both *worse than predicting the mean*. The joint model's negligible +0.018 margin over the geo baseline is exactly what an anti-vacuity control should reject, and B0 correctly rejects it: two deliberately-wrong references (permuted, rotated 90°) score as well as or better than the real geo predictor alone. **There is no signal here for a joint fit to identify.**

**No implementation bug found — checked, not assumed.** One storm was independently re-fetched and hand-audited (t0=54358); extended to the full 19-storm sample (committed in `comet_tail_w6.json`'s `B4_per_storm`, which now carries the raw `D`/`P_geo`/`P_bow`/`A_H`/`d_H`/`v_rel_ms` per storm, not only derived bearings — the first run shipped without these and the gap was self-caught before a reviewer needed to). Every value is physically sane (`A_H > 0` always, `d_H` inside the 600–2500 km annulus always, `v_rel` 2.8–27.9 m/s).

> **⚠ TWO CORRECTIONS, 2026-08-12 (codex + CodeRabbit P2/Major on PR #940,
> both real, both fixed same day) — the SIGN and the UNITS were both wrong
> in the first draft above.** (1) **Sign:** `spine()`'s raw fit coefficient
> points toward the storm's HIGH side (the gradient of *increasing*
> residual pressure), while `P_geo`/`P_bow` both point toward the LOW side
> by construction — exactly the convention `low_pole_bearing()` makes
> explicit via its own `(ph + π) % (2π)` flip
> (`comet_tail_f16.py:138-160`). `D` is now `−spine(...)`, matching that
> convention. This flips `c_geo` from −0.407 to **+0.407** (now the
> physically PREDICTED positive sign) and `c_bow` from +0.0006 to
> **−0.0006** (now the WRONG sign, where it had looked merely near-zero
> before) — the table above already carries the corrected values.
> Verified algebraically AND numerically before/after the flip: R² and
> every B0/B1 verdict are provably unchanged by this sign convention
> (OLS is odd-symmetric in the fit target), confirmed bit-identical on
> rerun. (2) **Units:** `D` and `P_geo` are both [Pa/km]; `P_bow` is [Pa]
> — so `c_geo` is dimensionless but `c_bow` carries **km⁻¹**, and OLS
> coefficients rescale inversely under column rescaling while leaving
> R²/fitted values unchanged. **Raw `|c_bow|` was never a valid basis for
> "no measurable weight"** — the original `|P_bow|` averaging 147× `|D|`
> comparison compounded the same error (Pa vs Pa/km, not comparable at
> all). The dimensionally valid measure is the FITTED CONTRIBUTION,
> `|c_bow·P_bow|` against `|D|`, both in Pa/km:
> **mean `|D|` = 0.745, mean `|c_geo·P_geo|` = 0.186 (25 % of `|D|`), mean
> `|c_bow·P_bow|` = 0.068 (9 % of `|D|`)**. The geo contribution is ~2.7×
> the bow contribution in fitted terms — modest, not "no weight" — and
> both are consistent with the R²<0 finding that neither predictor
> meaningfully explains `D`'s variance. **B0/B1's VOID verdicts are
> untouched by either correction** — this changes only the supporting
> narrative around B2, not the headline finding.

**The stranded stratum is empty for a structural reason, not a physics finding.** `min(v_storm) = 12.54 m/s` across all 19 storms — comfortably above `250 km / 6 h = 11.574 m/s`, the speed CT-F14's own `displacement_km ≥ 250` qualifying filter mathematically implies as a floor. **No storm in this displacement-filtered 19-storm set can ever be "stranded" (<8 m/s) — the report §10.2 stranded-rescue reading is UNTESTABLE on this sample by construction, not refuted.** Testing it needs a sample built WITHOUT the fast-motion-selecting displacement filter (or with a filter that explicitly retains slow storms) — a design note for any future stranded-rescue probe, not a task for this one to retrofit.

**What this means for the report's vector-sum model.** As specified — a global 2-parameter linear combination of a single background-high neighbor predictor and a single relative-motion bow-wave predictor, fit across 19 storms by ordinary least squares — **the model does not fit this data, and the fit is not merely weak, it is void by its own anti-vacuity control.** This does not rule out a richer version of the model (multiple neighbors, a nonlinear bow term, storm-specific coefficients) — but the specific, pre-registered, mechanistically-motivated form named in §10.2 is disconfirmed on this sample as tested. Consequence for CT-F17: its gate ("W6's result AND an independent adversarial spec audit") is now moot for the vector-sum model's CURRENT form — a fresh-sample verdict on a model that already fails its identifiability control on the STORED sample would not be a meaningful next step; the audit gate stands for any REVISED form of the model instead.

---

## §4 BRIEF W2s-b — the α-field on a real H–T pair (GATED on W2s-a G2 pass)

**File:** `corridor_alpha_probe.py`. Outline — finalize bars at spawn time
Expand Down
Loading