diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 7357082c9..3e5c194d8 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -1,3 +1,105 @@ +## 2026-08-12 — E-THE-GOLDEN-STEP-IS-THE-WRONG-STEP-AT-SMALL-Q-1 + +**Status:** FINDING `[G]` — arithmetic, fully reproducible, no fetch. Operator +ruling + three measurements run this session. + +**The ruling (operator, three messages, paraphrased):** golden-ratio +structure counts only from convergent index ~17–21 upward, below that it is +unusable · the preferred small-q combination is modulus 17 with stride 4 · +the stride-11 alternative is explicitly not a golden-section step. + +**Measured, and it splits into two regimes with two different generators.** + +1. **The index floor is real and my specs were below it.** `F(n+1)/F(n)` is a + RATIONAL of period `F(n)`; convergent error n=10 → **1.5e-4**, n=13 → + 8.2e-6, **n=17 → 1.8e-7**, n=21 → **3.7e-9**. Below the floor the ratio + *resonates* — the exact moiré the golden construction exists to prevent, so + a sub-floor lattice demonstrates the OPPOSITE of the property. The emergent + parastichy pair of an N-point Vogel lattice sits at `≈ √N`, so index ≥17 + needs **N ≳ F(17)² = 2 550 409**. **W5 was specced at N=4096 (emergent pair + F(10)/F(11)) and its discovery step searched `j ∈ {1..60}` — structurally + incapable of returning anything above F(10). The sub-floor answer was + hardcoded and every bar would have been measured on it.** W2s-a likewise at + N=2048. Both corrected; both now carry an N-sweep so the floor is measured, + not inherited. +2. **The angle is NOT what the floor binds.** `2π(1−1/φ)` in f64 is irrational + to ~1e-16 at any N. What the floor binds is the *addressable stride family*. + Keeping these apart is load-bearing: "fix the angle" would be the wrong + repair. +3. **Below the floor, do not approximate φ at all — ENUMERATE.** This is the + payload. `helix/KNOWLEDGE.md:320` labels `(i·11)%17` the **"golden-step"** + because `17/φ = 10.51 → 11`. Enumerating all 16 strides mod 17, prefix + star-discrepancy at m = 5/9/13: + + | stride | m=5 | m=9 | m=13 | | + |---|---|---|---|---| + | **4** | **0.2000** | **0.1111** | **0.0769** | shipped `CurveRuler`, D-QUANTGATE | + | 11 | 0.2000 | 0.1503 | 0.0905 | the "golden-step" | + + **Stride 4 is never worse than 11 and strictly better at m=9 and m=13.** + And `17/11 = 1.5455` is **7.3e-2** from φ — an order of magnitude worse + than `13/8` (7.0e-3). At q=17 there is no irrational to approximate, and + the φ-derived selector picks the measurably worse integer. *(Honest + caveat: under worst-case-over-all-m, strides 10–15 tie at 0.5000 and + stride 4 reads 0.7647 — that metric is dominated by m=2 where every stride + is degenerate. The useful-prefix reading is reported as the one that + matters, and the other is stated rather than hidden.)* + +4. **The MECHANISM below the floor is TEMPERAMENT, not approximation** + (operator framing: the stride-11-region walk behaves like a 5/3 + circle-of-fifths with a distributed Pythagorean-style comma — not a + genuine golden step, yet it does not collapse; and that last property is + the whole theory). A coprime stride `s` over `q` is + structurally a **circle of fifths**: it does not *approximate* the + irrational target, it **closes the cycle exactly** (coprimality → full + permutation) and **distributes the incommensurability error — the comma — + uniformly around the cycle** instead of letting it accumulate at a seam. + Measured: 12 pure fifths miss closure by the Pythagorean comma + **+23.46 ct**; 17-TET's fifth (stride 10) closes **exactly by + construction** with **+3.93 ct/fifth** spread around the circle. That + distributed comma is precisely the deterministic **anti-moiré dither** + D-QUANTGATE names. So the survival property below the floor is + **CLOSURE, not GOLDENNESS** — which is why the shipped integer walk was + always right even while its "golden-step" rationale was wrong. + - **The operator's tentative 5/3 identification resolves exactly:** the + 5/3 major sixth (884.36 ct) lands on **stride 13** (917.65 ct, +33.3 ct) + — and **13 ≡ −4 (mod 17)**: `4·13 ≡ 1`, they are inverses. **Stride 4 IS + the descending-5/3-sixth circle.** Stride 11 sits at 776.5 ct ≈ 8/5, the + neighbouring sixth — the hedge was right, and the measured answer is + 13 = −4, i.e. the operator's own stride 4 read backwards. + - Interval map for the record (17-TET): stride 3 ≈ 9/8 (−7.9 ct), 7 ≈ 4/3 + (+3.9), **10 ≈ 3/2 (−3.9, the fifth)**, **4 ≈ 7/6 (−15.5)**, + **13 ≈ 5/3 (+33.3)**. + - The two-regime table thus gets its mechanism column: **continuum** = + equidistribution by irrationality (φ, needs the index floor); + **quantized** = temperament — exact closure + distributed comma + (coprime walk, needs no φ at all). + +**Why this is the same defect as two others found this week — third instance +of one shape.** A rule true in its asymptotic home, applied where it does not +hold: **R² "structurally near-blind to encoder bias"** (true at +1.59 Pa → +6th decimal, false at +92.76 Pa → 3rd); **"zero removed lines proves a pure +prepend"** (proves *additive*; an end-append also deletes nothing); and now +**"the golden step is the best step"** (true as N→∞, false at q=17). **The +repair is identical each time: measure/enumerate in the regime you are +actually in, instead of inheriting the asymptotic label.** Corollary for this +workspace: a name carrying a theory ("golden-step", "lossless", "pure +prepend") is a claim, and claims get falsifiers — the label is not the +evidence. *(And the temperament frame shows the deeper reason the label was +seductive: the walk really does share φ's PURPOSE — even coverage without +collapse — it just achieves it by closure + distributed comma rather than by +irrationality. Same goal, different mechanism, wrong name.)* + +**Consequences.** Report §10.5 carries the two-regime table + the +addressing note (a `u8` rail holds 256 < F(17)=1597, so the continuum side +must read tier-then-member — while the quantized side never has the problem, +since the 17-alphabet fits a byte fifteen times over). `weather-w-probes-v1` +§0 carries the enumerate-don't-approximate rule so every worker inherits it. +`helix/KNOWLEDGE.md:320`'s "golden-step" label is filed in `ISSUES.md` as +misleading-but-not-wrong-code — the walk it names is fine, the *reason given +for choosing it* is not, and a future session picking a stride by that +rationale would pick 11. + ## 2026-08-12 — E-THE-CONTROL-SCORED-THE-HEADLINE-1 **Status:** FINDING `[G]` — `comet_tail_f16.py` / `.json`, bars committed diff --git a/.claude/board/ISSUES.md b/.claude/board/ISSUES.md index 83a72c4f0..66c8bb895 100644 --- a/.claude/board/ISSUES.md +++ b/.claude/board/ISSUES.md @@ -1,5 +1,20 @@ # Issues Log — Open + Resolved (double-entry, append-only) +## ISS-HELIX-GOLDEN-STEP-LABEL (2026-08-12) — OPEN, misleading-but-not-wrong-code + +`crates/helix/KNOWLEDGE.md:320` labels the `(i·11)%17` walk **"golden-step"** +(rationale: `17/φ = 10.51 → 11`). The label's THEORY is measured wrong twice +over (`E-THE-GOLDEN-STEP-IS-THE-WRONG-STEP-AT-SMALL-Q-1`): (a) stride 4 has +strictly better prefix star-discrepancy than 11 at m=9/13 (0.1111/0.0769 vs +0.1503/0.0905); (b) at q=17 the correct frame is TEMPERAMENT (coprime closure ++ distributed comma — operator framing: not a genuine golden step, yet it +does not collapse), not φ-approximation, so *"golden"* names the wrong mechanism +entirely. **The code is fine** — `CurveRuler` uses stride 4; only the doc +label misleads, and a future session choosing a stride BY that rationale +would pick 11 (the measurably worse one). Fix when helix is next touched: +rename the label (e.g. "tempered-step" / "coprime walk") + one line citing +the epiphany. Not urgent; filed so the rationale cannot silently recruit. + ## ISS-D-IGN-B-REAL-CORPUS-PATH-IS-UNVERIFIED (2026-08-06) — OPEN, SURFACED BY THE CORPUS FIX `crates/lance-graph-supervisor/tests/d_ign_b_lenses.rs` takes one of two corpus diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index 7a35551fc..b7b5247ec 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -855,6 +855,7 @@ Membrane consumers can now pull BOTH halves of a render `classid` BBB-safely fro | PR | Merged | Title | What it added | |---|---|---|---| | *gap note* | — | **#781–#925 are NOT in this table** — carried by the dated sections above + `PR_ARC_INVENTORY.md`. Recorded 2026-08-12 (codex P2 on #930) rather than silently reconstructed; the table had stalled at #780. | — | +| **#930** | 2026-08-12 | #929 hygiene → grew into an open-review sweep of #920–#930 + report §10 (product-lead program) + `weather-w-probes-v1` (Sonnet worker briefs) | MIXED (started as pure hygiene, corrected its own description twice per the #927 lesson). Sweep found 3 ledger figures wrong (R² "5th decimal" claim, "10 probes" undercount, "+13/−0,+10/−0,+0/−0" audit figures) and replaced the append-only audit itself (zero-deletions → suffix check, both halves measured, the new check correctly flags this very PR). §10 = measurement standard + dipole vector-sum model incl. stranded-storm regime + corridor α + queue-and-bow + sunflower/spiral-ADI substrate. Worker briefs W5/W2s-a/W6 ready; CT-F17 gated on W6 + independent adversarial audit. See sweep entry, `.claude/board/PR_ARC_INVENTORY.md` for the correction table — the figures in #928's/#929's rows below are SUPERSEDED by that entry, not edited in place. | | **#929** | 2026-08-12 | CT-F16 kills the steering rescue; the control scores the headline; circular resultant replaces the sign test | 2 probes (`comet_tail_f16`, `comet_tail_resultant_instrument`) + report §5.12/§5.13 + `E-THE-CONTROL-SCORED-THE-HEADLINE-1`. Steering FAILED both bars (0.579 vs 0.70; residual +28.4 % wider; sweep monotone to surface, best 850 hPa); rotated control scored 0.684 = CT-F14's headline; resultant resolves the same rows at p=0.0050, offset estimated −30.2°. | | **#928** | 2026-08-12 | Board hygiene for #927 — chain terminator | Pure prepend (+13/−0, +10/−0). Living-documents vs append-only-ledgers correction discipline banked; zero-removed-lines diff = structural append-only audit. | | **#927** | 2026-08-12 | Board hygiene for #926 + 4.7×-not-5× correction + append-only revert | Mixed. 9/10 figure self-verification caught the 6 % favourable rounding; an in-place edit of a MERGED EPIPHANIES entry reverted same-PR (the rule being cited was the rule broken). | diff --git a/.claude/board/PR_ARC_INVENTORY.md b/.claude/board/PR_ARC_INVENTORY.md index 78b59a4b9..36a6920ca 100644 --- a/.claude/board/PR_ARC_INVENTORY.md +++ b/.claude/board/PR_ARC_INVENTORY.md @@ -1,3 +1,14 @@ +## 2026-08-12 — lance-graph #930 (MERGED) — #929 hygiene that became a review sweep, a product-lead program, and a replaced audit method + +- **Added.** `probes/weather-p1/COMET_TAIL_REPORT.md` **§10** (the product-lead program: §10.1 measurement standard · §10.2 the dipole **vector-sum model** with the **stranded-storm regime** via `v_rel = v_storm − v_env` · §10.3 corridor α · §10.4 queue-and-bow anchors · §10.5 sunflower-facet / spiral-ADI substrate · §10.6 roadmap · §10.7 worker model) + `.claude/plans/weather-w-probes-v1.md` (Sonnet worker briefs; §0 is a **verbatim-paste preamble** carrying the iron rules, the `fetch()`/t-guard/`wrap_deg`/`circular()` code, controls-FIRST with the VOID rule, and the **stranded-rescue** checkpoint protocol — per-storm `.partial.jsonl` + resume-skip + `exec-runs/` heartbeat, so a killed worker resumes instead of re-fetching ~GBs). Board: INTEGRATION_PLANS prepend, STATUS_BOARD rows D-W5 / D-W2sA / D-W6 / D-W2sB / D-W7 / D-CT-F17 (all **Queued**), the #929 arc entry + LATEST_STATE, and the sweep entry below. +- **Locked — three ledger figures corrected and one audit method replaced.** Detail in the entry immediately below (kept as its own record because the sweep is the reusable part, not the PR). +- **Locked — a MIXED PR must correct its own description the moment it drifts.** #930 opened as "pure hygiene, the chain stops here" and was twice falsified by its own later commits. Both times the title and body were rewritten **proactively**, before a reviewer found them — the #927 lesson applied rather than re-learned. Consequence honoured here: a mixed PR owes an arc entry, so this one exists. +- **Deferred.** Every W-probe (operator go-ahead pending). **CT-F17 additionally gated** on W6's result **and** an independent adversarial spec audit before any bar is committed. The ~30 older CodeRabbit findings on #920/#921 remain **UNVERIFIED** by deliberate choice, recorded rather than absorbed. +- **Docs.** Report §5.13 + §6.1 carry dated correction notes; merged #929's PR body was patched post-merge for the same false relation (precedent: #922). +- **Confidence.** High on everything measured (every figure re-derived from the committed JSONs or from `git` in this session); the W-probe designs are **specifications, not results** — nothing in this PR was run. + +**Status:** MERGED (`9da349ac`). Branch `claude/jirak-math-theorems-harvest-rfii13` → `main`. Zero Rust, zero product code — docs, plans, board. + ## 2026-08-12 — open-review sweep of #920–#930 — three frozen figures corrected, and the append-only audit replaced with one that can actually fail - **Scope, stated at the coverage actually achieved.** Operator asked for the open comments on #930, then the previous five, then five more. All 68 review comments on **#920–#930** were enumerated; the checking depth is **not uniform and is not claimed to be**: #922–#930 were verified finding-by-finding against the tree, while **#920 (27 findings) and #921 (5) were spot-checked only** on their P1/governance items — both clean (`p1_noise_floor.py` carries an explicit `SUPERSEDED by p1_ci_vs_floor.py` header that fixes the decoded-error framing *and* the 255-vs-256 bucket-edge bug; the merged **#917** entry has exactly one commit in its whole history, `4be809c8`, so it was never mutated). **The remaining ~30 older coderabbit findings on #920/#921 are UNVERIFIED here** — recorded as such rather than absorbed into a clean-sweep claim. Result within the verified range: **#922 / #924 / #925 / #929 carry zero review comments**; **all 27 findings on #926 are fixed in the tree** (verified individually: `grid_pts` returns exactly `n` and the E2 JSON is regenerated at 64/64/64 · 256/256/256 · 1024/1024/1024; `subgrid_min` wraps longitude via `np.take(..., mode="wrap")`; `find_center` returns `None` on an empty mask; F7d tests `>= 40.0` matching its key; `CT_F12` emits `NO-VERDICT-INSUFFICIENT-N` instead of `pass: true`; storm metadata persisted; `d_dx` uses `np.roll`; `go_territory` writes `__file__`-relative; E6 requires a net decline; the 93–97 % headline superseded by 90.9–94.3 %); **#923's plan-status P2 is resolved**. Three findings on **#927/#928** were genuinely open, and all three were numbers already frozen in append-only ledgers. diff --git a/.claude/plans/weather-w-probes-v1.md b/.claude/plans/weather-w-probes-v1.md index 1224ba741..e7aa67e93 100644 --- a/.claude/plans/weather-w-probes-v1.md +++ b/.claude/plans/weather-w-probes-v1.md @@ -94,6 +94,53 @@ pass/fail bar. Every bearing-related bar ships with TWO controls through the identical pipeline: a +90°-rotated referent and a deterministically permuted one (`(i+7) % n`). The controls' scores are reported FIRST; if a control matches the real referent's score, the probe is VOID regardless of its bars. +**GOLDEN-RATIO INDEX FLOOR (operator-ruled 2026-08-12, binding on every +lattice/stride/spiral construction in this plan).** Golden-ratio structure is +usable only from convergent index ~17–21 upward; below that it is unusable +for these constructions. A Fibonacci ratio `F(n+1)/F(n)` is a +RATIONAL with period `F(n)`; it only behaves like the irrational φ from +**n ≈ 17–21** onward. Measured convergent error: n=10 → **1.5e-4**, n=13 → +8.2e-6, **n=17 → 1.8e-7**, n=19 → 2.6e-8, n=21 → **3.7e-9**. Below the floor +the ratio RESONATES — which is exactly the moiré/aliasing the golden +construction exists to prevent, so a sub-floor lattice does not weakly +demonstrate the property, it demonstrates the opposite. + +Two things this rule does and does NOT touch, keep them apart: +- **The golden ANGLE** `θ = k·2π(1−1/φ)` in f64 is irrational to ~1e-16. + **Unaffected.** Do not "fix" the angle. +- **The addressable STRIDE families** that EMERGE in a lattice of N points — + the visible parastichy numbers sit at `≈ √N`. **This is what the floor + binds.** For the emergent pair to reach index ≥17 you need + **N ≳ F(17)² = 2 550 409**, not thousands. A probe at N=4096 has its + natural pair at **F(10)=55 / F(11)=89** — six orders of magnitude below the + floor, i.e. squarely in the sub-floor resonance zone, no matter how precise + its angle. + +**BELOW THE FLOOR, DO NOT APPROXIMATE φ AT ALL — enumerate.** (Operator, +same ruling: the preferred small-q combination is modulus 17 with stride 4; +the stride-11 alternative is explicitly NOT a golden-section step.) The floor +does not mean "reach +for a slightly better Fibonacci ratio"; it means the φ-approximation +*selector* is the wrong instrument down there. Use the workspace's shipped +exact integer coprime walk — `CurveRuler::index(k) = (start + 4k) mod 17` +(`crates/helix/src/curve_ruler.rs`), D-QUANTGATE-mandated, bit-exact, full +permutation, no float φ. **Measured proof that φ-proximity mis-selects at +q=17:** `helix/KNOWLEDGE.md:320` calls `(i·11)%17` the "golden-step" because +`17/φ = 10.51 → 11`; enumerating all 16 strides, prefix star-discrepancy at +m = 5/9/13 is **stride 4 → 0.2000/0.1111/0.0769** vs **stride 11 → +0.2000/0.1503/0.0905** — stride 4 is never worse and strictly better at m=9 +and m=13. The ratio `17/11 = 1.5455` is `7.3e-2` from φ, an order of +magnitude worse than `13/8`. **If a probe needs a small-q walk, enumerate the +candidates and pick by measured discrepancy; never by closeness to φ.** + +**Obey it as the design default AND measure it.** Both lattice probes carry +an N-sweep arm that varies N so the EMERGENT pair lands at indices +{8, 10, 12, 14, 17, 19, 21} and reports the metric against index. If a knee +appears near 17 the floor is measured `[G]`; if the metric is flat from +index 10 up, say so plainly — the floor is then a safety margin, not a +mechanism, and that is the operator's call to keep or relax. Never report the +floor as confirmed without the sweep. + Comparative sentences in your output must name BOTH operands ("R̄ identical to X", never bare "identical") — a relation between two correct numbers can be false. @@ -118,17 +165,31 @@ be false. **File:** `spiral_adi_probe.py`. **Seed:** 20260812. **No network.** -**Objective.** On a Vogel lattice (`r = c·√k`, `θ = k·2π(1−1/φ)`, N=4096, -c chosen so max radius = 1.0), test whether alternating tridiagonal smoothing -sweeps along the two parastichy stride families approximate an isotropic 2D -diffusion — and that the result *depends on the strides being Fibonacci*. +**Objective.** On a Vogel lattice (`r = c·√k`, `θ = k·2π(1−1/φ)`, +**N = F(17)² = 2 550 409** so that `√N = 1597 = F(17)` puts the emergent +parastichy pair exactly ON the index floor, c chosen so max radius = 1.0), +test whether alternating tridiagonal smoothing sweeps along the two +parastichy stride families approximate an isotropic 2D diffusion — and that +the result *depends on the strides being Fibonacci*. + +> **⚠ N IS NOT A FREE PARAMETER AND THE FIRST DRAFT GOT IT WRONG.** This +> brief originally specified **N=4096**, whose emergent pair is +> **F(10)=55 / F(11)=89** (error 1.5e-4) — sub-floor by the §0 index +> floor. Worse, its step 1 searched `j ∈ {1..60}`, so it was *structurally +> incapable* of finding a family above F(10) — the sub-floor answer was +> hardcoded, and every bar below would have been measured on it. Both are +> corrected here. **Do not lower N to make the probe faster.** **Steps.** 1. Build the lattice. For each radius band (8 equal-area annuli), find the - dominant nearest-neighbor index-difference pair by measuring, for each - point, `argmin_j |x_{k+j} − x_k|` over `j ∈ {1..60}`; record the two most - frequent j per band (expect adjacent Fibonacci numbers; REPORT the bands - where they transition). + dominant stride pair **geometrically, with no capped search window** — + build a KD-tree (`scipy.spatial.cKDTree`) over the band's points, take + each point's 8 nearest neighbours, and histogram the **index differences + `|k_neighbour − k|`**; the two most frequent differences per band are the + stride pair. Report them and the bands where they transition. **The + capped `argmin` scan of the first draft is forbidden** — it presupposes + the answer's magnitude, and a discovery step that cannot return a large + or non-Fibonacci answer is not a discovery step. 2. Per band, measure the crossing angle between the two stride directions at each point (angle between `x_{k+j1}−x_k` and `x_{k+j2}−x_k`); report the distribution (median, IQR, per band). @@ -150,13 +211,34 @@ diffusion — and that the result *depends on the strides being Fibonacci*. - **B2 ISO:** after best-σ_ref calibration, relative L2 error between ADI result and isotropic reference ≤ **0.15**, AND second-moment anisotropy λ_max/λ_min ≤ **1.25**. -- **B3 CONTROL (can-it-fail):** identical run with strides forced to - **12 and 18** (non-Fibonacci, non-coprime-ish) must give anisotropy ≥ - **1.5×** the Fibonacci run's. If the wrong strides smooth just as - isotropically, the Fibonacci claim measures nothing — say VOID. - -**Output JSON:** `{bands: [...], crossing_angles: {...}, iso_error, aniso_fib, -aniso_control, verdicts: {B2, B3}}`. +- **B3 CONTROL (can-it-fail), at the SAME N:** identical run with the stride + pair forced to a **non-Fibonacci pair of comparable magnitude** — use + **1500 and 2600** (near F(17)=1597 / F(18)=2584 in size, so the control + differs in *arithmetic*, not in *scale*) — must give anisotropy ≥ **1.5×** + the Fibonacci run's. If the wrong strides smooth just as isotropically, the + Fibonacci claim measures nothing — say VOID. *(The first draft used 12/18, + which at N=2.55M is not a wrong-arithmetic control but a wrong-scale one: + stride 12 connects points that are nowhere near each other, so it would + have failed for a reason having nothing to do with Fibonacci.)* +- **B4 INDEX-FLOOR SWEEP (the operator's rule, measured not assumed):** repeat + the whole pipeline at **N = F(n)²** for `n ∈ {8, 10, 12, 14, 17, 19, 21}`, + each time using that N's OWN emergent pair (never a forced stride), and + report `iso_error` + `aniso` against n. **Two-sided and both readings must + be stated:** a knee near n≈17 promotes the floor to a measured `[G]`; a + curve already flat from n≈10 means the floor is a **safety margin, not a + mechanism** — report that plainly rather than burying it, and leave the + keep-or-relax call to the operator. Note `N = F(21)² = 1.2e8` is too large: + **cap the sweep at n=19 (N = F(19)² ≈ 1.75e7)** and record n=21 as + NOT RUN — do not silently drop it. + +**Cost note (changed by the floor):** N=2.55M f64 ≈ 20 MB/field, cKDTree +build ~10 s; the B4 sweep is dominated by its largest N. Budget **~10–20 min +and ~2 GB peak**, not the "minutes" of the pre-floor draft. Still zero fetch. +Checkpoint per (N, band) row per §0. + +**Output JSON:** `{N, bands: [...], crossing_angles: {...}, iso_error, +aniso_fib, aniso_control, sweep: [{n, N, pair, iso_error, aniso}], +verdicts: {B2, B3, B4}}`. --- @@ -170,7 +252,17 @@ the real cos-lat metric — the #921 lesson says disk properties do NOT automatically transfer. **Steps.** -1. Two Vogel lattices, N=2048 each, disk radius 1500 km, centers at +> **⚠ INDEX FLOOR — applies here too, but the bite is NOT obvious and must +> not be assumed either way.** The first draft used **N=2048** per lattice +> (emergent pair ≈ F(9)/F(10)), sub-floor by §0. But this probe's bars measure +> **pairing between two lattices** (ties, CV of nearest-pair distances), not +> stride addressability — and ties/incommensurability follow from the ANGLE +> being irrational, which holds at any N in f64. The evenness bar G2 is the +> one plausibly governed by the convergent index (three-gap structure). +> **Therefore: raise N so the question does not arise, AND measure it.** +> N = **F(17)² = 2 550 409** per lattice for the headline run. + +1. Two Vogel lattices, **N = 2 550 409** each, disk radius 1500 km, centers at (55.0N, 340.0E) and (55.0N, ~361.9E) → 1400 km apart at that latitude. Project to km via the metric `dx = R_E·cos(lat_c)·Δlon_rad`, `dy = R_E·Δlat_rad` (R_E=6371.0) — the same `geom_ll` convention. @@ -188,9 +280,21 @@ automatically transfer. golden CV **< grid CV** (strict). - **G3** (descriptive): χ² of pair-midpoint density against uniform across the corridor band, both constructions, reported not judged. - -**Output JSON:** `{n_pairs, ties_golden, ties_grid, cv_golden, cv_grid, -chi2_golden, chi2_grid, verdicts: {G1, G2}}`. +- **G4 INDEX-FLOOR SWEEP (does the floor bite THIS probe?):** rerun G1+G2 at + `N = F(n)²` for `n ∈ {8, 10, 12, 14, 17, 19}` and report ties + CV against + n. **The pre-registered expectation, written down before the run so it can + be wrong:** ties stay **0 at every n** (the angle is irrational at any N), + while CV improves monotonically and may flatten near the floor. **If ties + appear below the floor, the angle reading was wrong and G1's mechanism is + not what this brief claims** — report it as a correction to §0's "the angle + is unaffected" split, which is exactly the kind of claim that should be + falsifiable rather than inherited. + +**Cost note:** the N=2.55M headline plus the sweep; budget ~10 min, ~2 GB, +zero fetch. Checkpoint per (n, arm) row per §0. + +**Output JSON:** `{N, n_pairs, ties_golden, ties_grid, cv_golden, cv_grid, +chi2_golden, chi2_grid, sweep: [{n, N, ties, cv}], verdicts: {G1, G2, G4}}`. --- diff --git a/probes/weather-p1/COMET_TAIL_REPORT.md b/probes/weather-p1/COMET_TAIL_REPORT.md index 04a07ecd7..fbef9ad5f 100644 --- a/probes/weather-p1/COMET_TAIL_REPORT.md +++ b/probes/weather-p1/COMET_TAIL_REPORT.md @@ -1463,10 +1463,94 @@ Monte-Carlo's `O(1/√N)`; (2) two lattices over different centers are **prefix extensibility** — any prefix is well-distributed, so per-node accuracy grows monotonically by extending the sequence, no re-meshing. +> **⚠ INDEX FLOOR (operator-ruled 2026-08-12) — the three `[G]` properties +> above are asymptotic, and "asymptotic" starts LATER than this section +> implied.** Operator ruling: golden-ratio structure counts only from +> convergent index ~17–21 upward; anything below is unusable. +> `F(n+1)/F(n)` is a **rational** with period `F(n)`; it behaves like φ only +> from **n ≈ 17–21**. Measured: n=10 → err **1.5e-4**, n=13 → 8.2e-6, +> **n=17 → 1.8e-7**, n=21 → **3.7e-9**. Below the floor the ratio +> **resonates** — the exact moiré the construction exists to prevent — so a +> sub-floor lattice does not weakly show property (2), it shows its opposite. +> **Split that must be kept:** the *angle* `2π(1−1/φ)` in f64 is irrational to +> ~1e-16 and is unaffected; what the floor binds is the **emergent parastichy +> family**, which sits at `≈ √N`, so reaching index ≥17 needs +> **N ≳ F(17)² = 2 550 409**. Consequence already paid: the W5/W2s-a briefs +> were specced at N=4096/2048 (emergent pairs F(10)/F(11) and F(9)/F(10)) and +> W5's discovery step searched `j ∈ {1..60}`, hardcoding a sub-floor answer — +> both corrected in `weather-w-probes-v1.md`, and both now carry an **N-sweep +> arm so the floor is measured rather than inherited** (a flat curve from +> n≈10 would mean the floor is a safety margin, not a mechanism; that reading +> is pre-registered as reportable). + **The collision node is ONE V3 facet** (12 B): rails 0–1 = `(k_H:k_T)` — the pair address, from which position, radii and azimuths are *implied* (place deterministic, residue stored); rails 2–5 = **8 state bytes** (the 8 -Freiheitsgrade). Two sanctioned carvings — spine-pair +Freiheitsgrade). + +> **⚠⚠ TWO REGIMES, TWO GENERATORS — and below the floor you do not +> approximate φ at all (operator, 2026-08-12: the preferred small-q +> combination is modulus 17 with stride 4; stride 11 is explicitly not a +> golden-section step).** +> The floor above says a sub-floor Fibonacci ratio is unusable. It does **not** +> say "use a slightly better Fibonacci ratio" — it says the whole +> φ-approximation *selector* is the wrong tool down there. Use the **exact +> integer coprime walk** instead, which this workspace already ships: +> `CurveRuler::index(k) = (start + 4k) mod 17` +> (`crates/helix/src/curve_ruler.rs`, `helix/KNOWLEDGE.md:263`), the +> D-QUANTGATE-mandated generator — bit-exact integer, full permutation, no +> float φ anywhere. +> +> | regime | generator | mechanism | +> |---|---|---| +> | **continuum**, N ≳ F(17)² = 2 550 409 | golden angle + emergent parastichy pair `F(n)/F(n+1)`, n ≥ 17 | **equidistribution by irrationality** — convergent err ≤ 1.8e-7; the asymptotic properties are real here | +> | **quantized / small-q** (facet rails, palette, perturbation phase, dither) | **17, stride 4** — enumerated, not approximated | **temperament** (operator framing, 2026-08-12: a circle-of-fifths with a distributed Pythagorean-style comma — not a genuine golden step, yet it does not collapse): coprimality closes the cycle EXACTLY and distributes the comma uniformly — the distributed comma IS D-QUANTGATE's anti-moiré dither. Survival property = **closure, not goldenness** | +> +> **The temperament reading, measured.** 12 pure fifths miss closure by the +> Pythagorean comma **+23.46 ct**; 17-TET's fifth (stride 10) closes exactly +> by construction, **+3.93 ct/fifth** spread around the circle. And the +> operator's tentative identification of the stride-11-region walk with the +> 5/3 sixth resolves precisely: the 5/3 +> sixth (884.36 ct) is **stride 13** (917.65 ct) — and `13 ≡ −4 (mod 17)`, +> `4·13 ≡ 1`: **stride 4 is the descending-5/3-sixth circle**, stride 11 its +> 8/5 neighbour. The shipped walk was right all along; only its "golden" +> rationale was wrong — same goal as φ (even coverage without collapse), +> different mechanism (closure + distributed comma), wrong name. +> +> **The measured tell that φ-proximity is the WRONG selector at small q.** +> `helix/KNOWLEDGE.md:320` labels `(i·11)%17` the *"golden-step"* because +> `17/φ = 10.51 → 11`. Star discrepancy of the length-m prefix, all 16 strides +> enumerated: stride **4** gives **0.2000 / 0.1111 / 0.0769** at m = 5/9/13; +> stride **11** gives **0.2000 / 0.1503 / 0.0905**. **Stride 4 is ≤ stride 11 +> at every useful prefix length and strictly better at m=9 and m=13** — the +> φ-derived choice is measurably the worse one. And the ratio itself: +> `17/11 = 1.5455`, **err 7.3e-2** vs φ — worse than `13/8` (7.0e-3) by an +> order of magnitude. *(Caveat kept honest: under a naive worst-case-over-all-m +> reading, strides 10–15 tie at 0.5000 and stride 4 reads 0.7647 — that metric +> is dominated by m=2, where every stride is degenerate. The useful-prefix +> reading is the one that matters and it is the one reported.)* +> +> **Third instance this week of one shape:** a rule true in its asymptotic +> home, applied where it does not hold — R² "near-blind to bias" (true at +> 1.59 Pa, false at 92.76 Pa), "zero deletions proves a prepend" (proves +> additive), and now "the golden step is the best step" (true as N→∞, false +> at q=17). **The fix is the same each time: enumerate/measure in the regime +> you are actually in, rather than inheriting the asymptotic label.** + +> **Addressing consequence, and the floor dissolves it in the quantized +> layer.** A `u8:u8` rail gives **256 values per byte** — and `F(17) = 1597 > 256`, +> so **a single byte cannot index a member of an at-floor parastichy family.** +> This is NOT a contradiction with the operator-locked `6×(u8:u8)` facet +> (`u8:u8` is never widened): the address is **hierarchical** — the canon's +> three cascade tiers each read as a 256×256 centroid tile, giving 65 536 per +> tier and 256⁶ ≈ 2.8e14 overall, so a 1597-member family sits comfortably +> inside ONE tier. **The forbidden reading is "one rail = one family index"; +> the correct one is tier-then-member.** Anyone tempted to widen a rail to +> hold 1597 has mis-read the cascade, not found a limit. +> +> **And in the quantized layer the tension does not arise at all:** with the +> 17-and-stride-4 generator the step alphabet is 17, which fits a byte fifteen +> times over. The 1597-vs-256 question is a *continuum-side* question only. Two sanctioned carvings — spine-pair (`p_H, g_H, p_T, g_T, u, v, α, resid`) vs kinematic/frontogenesis (`u, v, div, ζ, stretch, shear, p, ∇T` — the Petterssen machinery) — and the ClassView picks the reading per class, which is exactly what content-blind