From 873fff62ad23f8ee81e0944a6de67f7215619d71 Mon Sep 17 00:00:00 2001 From: Yuren Hao Date: Sat, 4 Jul 2026 22:35:53 -0500 Subject: FINDINGS: magic-s2000 mechanism entry (stability-dip audit) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_014FAPDWQ49M5Ye3NpTndTpn --- docs/campaign/FINDINGS.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'docs/campaign') diff --git a/docs/campaign/FINDINGS.md b/docs/campaign/FINDINGS.md index cfd6fdf..e3fdcc8 100644 --- a/docs/campaign/FINDINGS.md +++ b/docs/campaign/FINDINGS.md @@ -644,3 +644,30 @@ Full write-up: **`SESSION_2026-06-24_HOPF_DIAGNOSIS_RESREG_FIX.md`**. This pins 2. **The "one reg" candidate: de-cliff resreg → a graded finite-horizon LE penalty (aep 'floss' ported, "floss-ept")** — penalize the measured per-step contraction rate over the last q relax steps (differentiable through q≈8–16 steps on a sub-batch), giving a linear early signal of the same fundamental quantity. resreg = its cliff-shaped special case; spec_penalty = its rank-1 approximation. 3. **spec_penalty stays as the surgical scalpel** for a detached Hopf pair (measure-mode application), **jacreg retires** from stability duty. 4. Three-arm from-scratch ablation when GPU frees: floss-ept-only vs resreg-only (never cleanly run — ROUND2 only had specnorm+jacreg0 / queued no-penalty) vs proven pair (resreg 0.2 + frozen jr 0.1) — logs res + measure-mode ρ + val. + +--- + +## 2026-07-05 — the magic-s2000 MECHANISM: a narrow post-excursion stability dip in a run that oscillated ACROSS the edge (ARPACK audit of redx_traj) + +**Trigger.** User hypothesis: "the recipe that made s2000 blew up later; maybe some reg is superfluous early." Archaeology: redx recipe = frozen jr 0.1, **NO resreg** (predates it), blew step 3300 (2.74→41); `redx_traj/` holds every-100 ckpts s600–s3600. + +**Gold table (ARPACK on M=I+εJ_F at 400-step deep states, same batch; `eig_traj2/3.py`):** + +| ckpt | leading μ | state | +|---|---|---| +| s1000 | +0.19±1.55j | OUT (rotating) | +| s1400 | **+2.07** | OUT — violent excursion (log res 5.2e-2), **self-recovered by s1500** (res 2e-3, better than before) | +| **s2000** | **−0.020** | **★ the ONLY stable snapshot — the dip** | +| s2100 | +0.015 | out (dip exited) | +| s2200 | +0.034 | out (val 3.015 better than s2000's 3.16 — but unstable, useless as seed) | +| s2300 | +0.053±1.07j | out, rotation building | +| s2400/s2800 | +0.056 / +0.161 | out | +| s3200 | +0.127±2.07j | full rotating instability → dead 3300 | + +(s3400/s3600 traj files are byte-duplicates of s3200 — post-blow saver artifact.) + +**The corrected story.** The reg-light run did NOT ride smoothly to the edge: it **crossed by s1000 and oscillated across the boundary**, with at least one violent excursion-and-recovery, **while val kept falling through the unstable stretches** — mild instability does not stop EP learning; only large-amplitude cycling (3300) kills it. s2000 is the snapshot of a **narrow (<100-step-wide exit side) stability dip right after the recovery**: edge-forged structure captured inside a momentarily stable envelope. That combination — not "deep contraction" (retracted 07-03), not gradual approach — is the magic. Warm-start + leash then rides the edge (1.93 era; warm_fast best 1.8977). + +**Protocol (golden seeds are manufacturable).** Reg-light run → save every ≤100 steps → ARPACK dip-screen → warm-start from a certified dip (|λ|<1 at depth). `abl_delay` (queue arm0, --reg_delay 2000) is the fixed-switch approximation; if its switch lands mid-instability the refinement is **engage-on-dip** (res_ema<~2e-3 after step≥1200), not a longer delay. Corollary for the plateau: resreg-from-step-0 may prevent the edge-forged structures from ever forming (safe scratch 2.06–2.24 vs warm-from-dip 1.90). + +**Tooling verdicts.** `lead_rho` cold (≤40 iters) under-reads near-unity clusters by 0.02–0.06 and mis-classified s1000/s2400/s2800 as stable — **audits must use ARPACK**; lead_rho is for warm-started in-training tracking only. Hidden `jacreg==0` damping feedback found in the train loop (res-driven c up/down) — would have polluted single-reg ablation arms; new `--noadaptc` kills it (arms updated). -- cgit v1.2.3