summaryrefslogtreecommitdiff
path: root/protocol
AgeCommit message (Collapse)Author
2026-04-23Update NOTE.md + EVIDENCE_SUMMARY.md with FA results (2026-04-23)YurenHao0426
NOTE.md: added comprehensive current-status section at the top with the full 6-method audit table (BP/FA/EP/DFA/CB/SB), FA vs DFA key comparison, depth sweep, penalty rescue comparison, cross-method functional triangulation, and open items. Old Phase 10A content kept below as historical reference. EVIDENCE_SUMMARY.md: added "Vanilla FA vs DFA" section with the paper-changing finding (FA 0.401 ± 0.009 vs DFA 0.306 ± 0.008, FA has genuine deep cos +0.33, no Mode 1(b) collapse) and the d=512 depth sweep table. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08Sync EVIDENCE_SUMMARY.md and PAPER_OUTLINE.md with v2.32 valuesYurenHao0426
These two project scratch documents had stale BP=0.609 and DFA=0.308 references from the pre-v2.31 era. Updated to the matched 30-ep 3-seed values that v2.31-v2.32 corrected: BP no-pen 30ep: 0.609 → 0.585 ± 0.001 BP+pen 30ep: 0.530 → 0.532 ± 0.006 DFA no-pen 30ep: 0.308 → 0.301 ± 0.005 DFA+pen 30ep: 0.363 → 0.360 ± 0.001 Gap math: +5.5/-8 → +5.9/-5.3 pp; +18.1/+1.4 → +18.3/+1.1 pp Deep cos: +0.155 → +0.151 Now the paper, the protocol library, the README, the helper scripts, and the project scratch docs all agree on the v2.32 values. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08Sync experiment+protocol scripts with v2.32 corrected control valuesYurenHao0426
The pre-v2.31 unsourced values BP=0.609 and DFA=0.308 (which v2.31 fixed to 0.585 and 0.301 via matched 30-ep controls) were also hardcoded as "compare to" comments in 5 helper scripts: experiments/bp_with_penalty_control.py experiments/dfa_residual_penalty_test.py experiments/resmlp_frozen_blocks_baseline.py protocol/examples/threshold_d_sensitivity.py protocol/examples/plot_penalty_rescue.py These are non-paper-input scripts (their output goes to stdout, not to the paper), so the stale values didn't cause numerical errors in the paper itself. But the original v2.31 BP+pen=0.609 unsourced number bug came from exactly this kind of hardcoded "for-comparison" comment that was never measured. Updating them now to remove the same trap from future runs. Each script now references the matched 30-ep 3-seed values from results/bp_no_penalty_30ep, results/dfa_no_penalty_30ep, results/ dfa_pen_short, and results/bp_with_penalty. protocol/EVIDENCE_SUMMARY.md and PAPER_OUTLINE.md still have stale numbers — these are project scratch documents and not user-facing. Deferred to a separate sweep if needed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08protocol/README.md: sync (c) range with v2.31.13 paper updateYurenHao0426
Same fix as v2.31.13's paper §6 ¶3 and the protocol.py docstring sync: the README's "0.05-0.18 / 0.43-0.99" calibration ranges were the same loose values that v2.31.13 corrected. Updated to match the actual audit data: BP/EP in [-0.04, +0.12], degenerate up to +0.99 with 5/9 above the 0.30 cutoff. Now the paper §6 ¶3, protocol.py docstring, and protocol/README.md all agree on the (c) calibration ranges. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08protocol/protocol.py: sync (c) range docstring with v2.31.13 paper updateYurenHao0426
The cross_batch_direction_stability docstring claimed healthy values "~0.05-0.18" and drift-dominated "~0.5-0.99" — these were the same loose ranges that v2.31.13 corrected in the paper §6 ¶3. Re-aggregated from results/protocol_audit/audit_table_s42_s123_s456.json (K=10 batches of 128 samples): Healthy 6 BP+EP values: range [-0.036, 0.120], median 0.093 Degen 9 DFA/SB/CB values: range [-0.005, 0.992], median 0.352 5/9 above 0.30 cutoff 3/9 above 0.50 Updated docstring to match the actual audit data and point at the JSON source. Now the paper §6 ¶3 prose and the protocol.py docstring agree exactly on the (c) calibration ranges. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08PAPER_OUTLINE: add 6th validation (perturbation correlation triangulation)YurenHao0426
2026-04-08EVIDENCE_SUMMARY: add 6th validation (perturbation correlation triangulation)YurenHao0426
2026-04-08EVIDENCE_SUMMARY: §4 fully rewritten under locked two-distinct-modes framingYurenHao0426
§4 now reflects all 5 independent validations of the converged framing: 1. Direct deep cos on penalized DFA (3 seeds): +0.155 ± 0.025 2. Null calibration with fresh Bs: +0.002 ± 0.022 (real signal) 3. Hypothesis B disambiguation (vanilla early ep): -0.008 ± 0.013 4. BP+penalty 2×2 control: 17 pp residual = credit quality 5. Multi-seed lock-in: 24 measurements all near zero Round 20 language tightening applied: - 'lower bound on non-capacity gap' instead of 'clean isolation' - Explicit caveats about end-to-end vs local-loss difference - Counter to 'different optimization regime' objection The §4 framing is locked. Five independent validations done. Stop iterating, start writing.
2026-04-08PAPER_OUTLINE: round 20 language tightening + 5 validation summaryYurenHao0426
§4 updates per round 20: - Soften 'confirmed' to 'strongly supports' - Add §4.4 BP+penalty capacity-cost control with the round 20 phrasing: 'lower bound on residual gap under matched architecture/data/optimizer/ penalty, after accounting for the penalty's direct capacity cost in BP' - Add multi-seed lock-in to §4.3 (24 measurements all near zero) - List 5 independent validations supporting the converged framing The §4 narrative is now complete and the framing is locked.
2026-04-08PAPER_OUTLINE: §4 rewrite under 'two distinct failure modes' framingYurenHao0426
After the round 19 disambiguation experiment confirmed hypothesis B (penalty CREATES deep alignment, not just reveals it), the paper §4 needs to use the new framing: Mode 1: measurement degeneracy via terminal LN gradient cancellation Mode 2: low intrinsic credit-direction quality of random feedback Both modes are direct-measured (mode 1 by diagnostic (b), mode 2 by per-layer cos in the meaningful regime). The penalty partially alleviates BOTH modes. Neither is fully fixed. §4 rewrite includes: - The two modes (4.1) - Penalty causal validation with 3-seed cos (4.2) - Disambiguation: vanilla early-epoch cos table proving hypothesis B (4.3) - Why the residual gap is partial alignment (4.4) - Why this framing is paper-cleaner than prior ones (4.5) Walk-back chain extended to 7 entries, with 6 and 7 happening same-day and converging on the final two-distinct-modes framing.
2026-04-08Add PAPER_OUTLINE.md: §1-§6 draft reflecting round 17 + 18YurenHao0426
Comprehensive paper draft outline for the NeurIPS 2026 E&D submission: §1 Discovery-first hook (round 16 narrative arc): broken eval -> evidence -> metrics miss -> need protocol -> validation §2 Audit findings: 5-method × 3-seed audit, walk-back details, EP internal control §3 The diagnostic protocol: 4 diagnostics, decision-utility ablation, threshold sensitivity (with (d) fragility flagged), temporal validation, cross-architecture validation, sub-mode discrimination §4 Two failure modes: mechanism story + causal penalty rescue, with the round 18 softening (partial dissociation rather than full separability) §5 Pipeline pitfalls catalog: 7 bugs (incl. new #6.5 self-cosine fallback) §6 Reference implementation + Limitations / walk-backs section listing all 5 walked-back claims explicitly This is a working draft to make the next writing step concrete. Reflects all evidence collected through the round 18 follow-up.
2026-04-08Add penalty lambda 3-seed summary script + checkpoint save in penalty testYurenHao0426
- New script: protocol/examples/penalty_lam_3seed_summary.py Loads existing penalty JSON files for lam=1e-3 and lam=1e-2 across seeds, computes 3-seed mean margin vs DFA-shallow baseline, and explicitly checks the (d) verdict at 2pp threshold per seed and in aggregate. Reports MIXED if seeds disagree. Current result: lam=1e-2 has 3 seeds (margin +1.38 ± 0.05 pp, all FIRE), lam=1e-3 has 1 seed (+2.31 pp, PASSES). Awaiting s123/s456 for lam=1e-3. - experiments/dfa_residual_penalty_test.py: now saves model checkpoint + Bs alongside JSON log so post-hoc protocol can be applied without re-running. Closes the pitfall #6.5 self-disclosure (auxiliary nets must be saved for post-hoc Gamma to be reconstructible).
2026-04-08Add penalty λ sweep figure: shows λ-dependence of (d) verdictYurenHao0426
3-panel figure: vanilla DFA + penalty at λ=1e-3 (green) + penalty at λ=1e-2 (blue): (a) ‖h_L‖: vanilla 4e8, both penalties ~4e4 (similar) (b) ‖g_2‖: vanilla 5e-10, penalties 7e-7 to 1e-6 (above floor) (c) acc: vanilla 0.31, λ=1e-2 0.36, λ=1e-3 0.37; horizontal lines at DFA-shallow 0.349 and 2pp threshold 0.371 Visual: at λ=1e-3 the test acc curve crosses ABOVE the 2pp threshold line; at λ=1e-2 it stays below. This is the (d) lambda-dependence finding from the round 18 follow-up.
2026-04-08EVIDENCE_SUMMARY: add (d) threshold sensitivity finding (round 18)YurenHao0426
2026-04-07Add (d) frozen-baseline threshold sensitivity — IMPORTANT new findingYurenHao0426
Critical observation: at lambda=1e-3 (single seed), penalized DFA margin above shallow baseline is +2.3 pp — which PASSES (d) at the 2 pp default threshold. At lambda=1e-2 (3 seeds), the margin is +1.4 pp — FIRES (d) at 2 pp. So the (d) verdict on penalized DFA depends on BOTH the lambda choice AND the threshold choice. This is a significantly weaker claim than 'two failure modes are separable via (d)'. The honest framing per round 18 lesson: there is a real tradeoff between penalty strength and depth utilization. Weaker penalty preserves more depth contribution but also more scale pathology. Stronger penalty kills depth contribution. The protocol surfaces this tradeoff but doesn't establish the second failure mode by itself. Compared to (a) 63x and (b) 24338x separation gaps, (d) is the LEAST robust diagnostic and the most sensitive to threshold choice. Need to flag this prominently in the paper.
2026-04-07CHECKLIST pitfall #6: layer-0 dominance is ResMLP-specific, not universalYurenHao0426
Verified by extracting per-layer gamma_dfa from existing ViT-Mini snapshot JSON (3 seeds, final epoch). On ViT all 4 layers have per-layer cosine near zero (~0.001 with eps clamp); no layer dominates. Compare to ResMLP where layer 0 has +0.42 and layers 1-4 are essentially zero. The pitfall is real on ResMLP but the specific 'layer 0 dominates' framing doesn't generalize to ViT. Reframed as 'aggregation hides per-layer structure'; lesson is to always report per-layer values regardless of which architecture-specific pattern you might be hiding.
2026-04-07EVIDENCE_SUMMARY: round 18 language softening on CNN + penalty auditYurenHao0426
2026-04-07CHECKLIST: add pitfall #6.5 — silent self-cosine fallback when aux nets ↵YurenHao0426
not saved Discovered in our own cnn_baseline.py: when the random feedback Bs (for DFA) or bridge predictor (for SB/CB) are not persisted alongside the model checkpoint, post-hoc Gamma computation cannot reconstruct the local credit signal. Instead of erroring, the script falls back to cos(BP_grad, BP_grad) = 1.0 and records that as Gamma. Reader who doesn't notice the small 'Gamma_note' field interprets 1.0 as perfect alignment. Recommendation: always save aux nets alongside checkpoints; if they're missing, report Gamma as N/A, not 1.0.
2026-04-07EVIDENCE_SUMMARY: add §3.7 CNN cross-architecture audit resultsYurenHao0426
2026-04-07Add CNN third-architecture audit: BN, no terminal LNYurenHao0426
5 methods × 3 seeds on the SmallCNN (3 conv + BN + 1 FC + head, no terminal LN) using existing checkpoints in results/cnn_baseline/. Key findings: BP CNN: 0.866 acc, max/block 1.3, trustworthy State Bridge CNN: 0.633 acc, max/block 2.4, trustworthy EP CNN: 0.512 acc, max/block 12, trustworthy DFA CNN: 0.566 acc, max/block 237, walked back via (a) Credit Bridge CNN: 0.325 acc, max/block 96, walked back via (a) CRITICAL: diagnostic (b) ||g_L|| floor NEVER fires on CNN for any method. The deepest BP grad is at ~1e-5 to 6e-1, all well above the 1e-7 floor. This is the cleanest confirmation that terminal LayerNorm is the structural cause of the catastrophic gradient collapse in (b). Without out_ln, the BP grad does NOT collapse to the floor, even on DFA. The scale pathology (a) still appears on DFA and CB, but the gradient collapse pathology (b) is specific to terminal-LN architectures. DFA CNN's accuracy (56.6%) is much higher than DFA ResMLP (30.8%) or DFA ViT (23.7%) — partially because the scale pathology is less catastrophic without the LN-driven gradient cancellation amplifying it. This is the cross-architecture mechanism story made concrete.
2026-04-07Add minimal worked example: end-to-end protocol usage tutorialYurenHao0426
5-epoch DFA training on CIFAR-10 + apply protocol + interpret verdict. Self-contained, runs on CPU in <2 minutes. Demonstrates the API a future paper author would use: 1. train your model (any FA-style method) 2. build eval_batches from your test loader 3. call diagnose(model, eval_batches, headline_acc, frozen_baseline_acc) 4. read report.verdict; walk back if 'needs walk-back' Not run during this session to avoid GPU contention with the in-flight direction-quality and ViT/ResNet experiments.
2026-04-07Add §4 penalty rescue figure: visual two-failure-modes storyYurenHao0426
3-panel side-by-side showing per-epoch trajectories of vanilla DFA vs DFA + lambda*||f||^2 penalty: (a) ||h_L||: vanilla 4e8 vs penalty 4e4 (4 OOM rescue) (b) ||g_L||: vanilla 5e-10 vs penalty ~1e-6 (4 OOM rescue) (d) test acc: vanilla 0.31 vs penalty 0.36 vs frozen baseline 0.349 vs BP 0.61 The visual story: (a) and (b) show the penalty pulling the diagnostics back into the healthy regime, but (d) shows the rescue translates to only +1 pp above the DFA-shallow baseline and 24 pp below BP-trainable. The two failure modes (scale + direction) are visually separable: scale is fixed, direction is not. Together with figure_audit_5method.png and figure_cross_arch_temporal_s42.png, this is the third paper-ready figure for §3-§4.
2026-04-07EVIDENCE_SUMMARY: add §3.5 sensitivity, §3.6 cross-width, §4 ↵YurenHao0426
separability, figures section
2026-04-07Add §2/§3 hero figure: 5-method audit horizontal bar chartYurenHao0426
4-panel layout (one per diagnostic), 5 methods sorted bottom-to-top by ascending accuracy, color-coded healthy (BP/EP, blue) vs degenerate (DFA/SB/CB, red), with threshold lines drawn: (a) max per-block growth (log scale, threshold 50x) (b) ||g_L|| (log scale, floor 1e-7) (c) cross-batch stability (linear, ceiling 0.30) (d) headline acc (linear, frozen baseline 0.349) The visual layout makes it immediately obvious that: - (a) and (b) cleanly split healthy from degenerate (4-7 OOM gap) - (c) is bimodal and doesn't cleanly split — confirms it's a sub-mode discriminator, not a primary detector - (d) shows BP above the frozen baseline by ~25 pp while DFA/CB/SB are at or below it
2026-04-07Add d=512 ResMLP audit table (3 seeds): cross-width validationYurenHao0426
Same protocol applied to the 4-block d=512 ResMLP variant (vs the d=256 default). 4 methods × 3 seeds = 12 conditions: BP @ d=512: trustworthy on all 3 seeds (acc 0.60-0.61) DFA @ d=512: walked back on all 3 seeds via (a)+(b) State Bridge @ d=512: walked back on all 3 seeds via (a)+(b), with drift sub-mode on s123 (stability 0.879) Credit Bridge @ d=512: walked back on all 3 seeds via (a)+(b) Width effect: max-per-block growth is HIGHER at d=512 (6e3-7e4) than at d=256 (~1e3). Larger width amplifies the explosion. The protocol verdicts are robust to this — same binary outcome, more extreme quantitative numbers. This is the cross-width validation: the protocol's findings are not d=256-specific. The §3 audit results generalize across the width dimension.
2026-04-07Partial protocol audit on penalized DFA: (a)+(b) pass, (d) still firesYurenHao0426
3-seed analysis of DFA + lambda=1e-2 ||f||^2 penalty using only the data already in the existing penalty JSON logs (no checkpoint or full layer norms needed): (a) per-block growth: avg ~8x per block (geom mean), well below 50x threshold. PASS likely (with small caveat that max could differ from mean). (b) BP grad floor: g_2 = 8-10e-7 across 3 seeds, 10x above the 1e-7 floor. PASS exact. (d) frozen baseline: margin = 1.35-1.45 pp (mean 1.38) < 2 pp required. FIRE on all 3 seeds. Aggregate partial verdict: protocol catches the SECOND failure mode (direction quality / passive blocks) on penalized DFA even though it PASSES the scale-related diagnostics. This is the cleanest possible evidence that the two failure modes are separable: the penalty fixes the scale failure but not the direction failure. The protocol's (d) diagnostic is the right test for the second failure mode and it still fires after the penalty rescue. This is the §4 'two failure modes' evidence that doesn't depend on the direction-quality direct test (which is still running). The (d) diagnostic alone shows the separation.
2026-04-07Add EVIDENCE_SUMMARY.md: consolidated snapshot of all protocol evidenceYurenHao0426
Single-document overview of every result the protocol package has produced so far, with reproducibility commands and the file/memory entry where each result is recorded. Organized by paper section (§1 protocol, §2 audit, §3 decision utility, §4 temporal validation, §5 pitfalls). Includes the headline tables (3-seed audit, cross-architecture, penalty sweep) ready for the paper, and an explicit status field for each ongoing experiment. This is a reading guide for anyone (codex, future-me, the user) who needs to know what evidence is ready and how to reproduce it.
2026-04-07Add §3 cross-architecture temporal evolution figureYurenHao0426
3-column 3-row plot: rows: ||h_L||, ||g_L||, test accuracy cols: ResMLP (with LN) | ViT-Mini (cls + LN) | StudentNet (no LN) BP and DFA trajectories overlaid. Floor threshold drawn on the ||g_L|| row. Visualizes the cross-architecture causal control: with-LN architectures both show ||g_L|| collapse below 1e-7 (DFA hits the floor within 5 epochs); without-LN architecture shows ||g_L|| stays in the healthy regime even though ||h_L|| still grows (catastrophic vs mild).
2026-04-07Add threshold sensitivity analysis: (a) 63x gap, (b) 24338x gapYurenHao0426
For each diagnostic, sweeps threshold across orders of magnitude on the 3-seed audit data and reports the verdict at each value. Key calibration findings (3 seeds): Diagnostic (a) max per-block growth: Healthy max (BP/EP): 11.0 Degenerate min (DFA/SB/CB): 694 Separation gap: 63x Default threshold 50 sits comfortably in the middle. Any threshold in [12, 693] gives the same verdicts. Diagnostic (b) ||g_L|| at floor: Healthy min (BP/EP): 1.02e-4 Degenerate max (DFA/SB/CB): 4.18e-9 Separation gap: 24,338x Default threshold 1e-7 sits comfortably in the middle. Any threshold in [4.2e-9, 1.0e-4] gives the same verdicts. Diagnostic (c) cross-batch stability: NOT a clean binary discriminator across seeds. BP s456=0.114 near threshold; DFA s42=0.047 (noise sub-mode) doesn't fire; SB s456=0.035 (noise sub-mode) doesn't fire. (c) is for sub-mode interpretation, not binary detection. This is the calibration evidence answering the E&D reviewer question 'why these specific thresholds?'.
2026-04-07Add reproducers for pitfalls 4-6 (Bs reproducibility, aggregation, layer-0)YurenHao0426
All 3 verified on the real DFA s42 checkpoint: Bug 4: training Bs gives Γ=+0.068, 10 fresh Bs draws give Γ=+0.0043±0.007. The 'alignment' is the network adapting to specific Bs. Bug 5: 4 valid aggregation strategies give Γ in [-0.028, +0.074]. The spread is 0.10 (3.45x ratio) and **the sign flips** between strategies. Pick the wrong aggregation and DFA is anti-aligned; pick the right one and DFA looks aligned. Bug 6: Γ_layer0 = +0.429 dominates the mean +0.068. Hidden layers 1-4 are all near zero or slightly negative. Mean of hidden layers only is -0.022 (negative!). The deep blocks the paper claims to be 'training' have Γ ≈ 0 or below. Bugs 5 and 6 are causally linked: 'median over layers' strategies pick a negative deep layer; 'mean over layers' is dominated by the positive l0. The catalog under-reported bug 5 (it said 2.5x, actual is 3.45x with sign flip).
2026-04-07Add training-monitor early-stop demo: 96% compute savings on DFAYurenHao0426
Demonstrates the practical use case of the protocol — not as a post-hoc audit but as an in-training abort condition. Walks through the existing per-epoch trace and shows when the protocol would have triggered an early stop on DFA training and what the saved compute would be. Result: DFA on 4-block d=256 ResMLP fires diagnostic (b) at epoch 4 with test acc 0.3076. The final acc at epoch 100 is *also* 0.3076 (identical). Stopping at epoch 4 saves 96% of compute with zero headline acc loss.
2026-04-07Cross-architecture temporal validation: 3 archs x 3 seeds x 2 methodsYurenHao0426
ResMLP (4-block d=256, with out_ln, CIFAR-10): s42: DFA (a) ep 8, (b) ep 4, acc 0.308 s123: DFA (a) ep 11, (b) ep 4, acc 0.320 s456: DFA (a) ep 8, (b) ep 3, acc 0.300 ViT-Mini (4-block d=128, cls token + terminal LN, CIFAR-10): s42: DFA (a) ep 1, (b) ep 3, acc 0.256 s123: DFA (a) ep 1, (b) ep 2, acc 0.202 s456: DFA (a) ep 1, (b) ep 3, acc 0.253 StudentNet (4-block d=128, NO terminal LN, synthetic alpha=1.0): s42: DFA (a) ep 18, (b) NEVER, acc 0.332 s123: DFA (a) ep 14, (b) NEVER, acc 0.314 s456: DFA (a) ep 25, (b) NEVER, acc 0.336 BP: never fires on any seed x any architecture (9/9 sanity passes). Key cross-architecture finding: diagnostic (b) is specifically the LN- driven failure mode. Without out_ln, the BP grad never crosses the 1e-7 floor, even though (a) still fires (the residual stream still grows, just without the LN-cancellation pathology that drives the BP grad to the floor). This is the causal architectural control: (b) specifically tests 'is terminal-LN gradient cancellation active?' and (a) tests 'is the residual stream growing without bound?'. They are linked but separable. This is the §3 cross-architecture validation evidence.
2026-04-07Protocol diagnostic (a): use max per-block growth, not max/min ratioYurenHao0426
Old metric: max(||h||) / max(||h_0||, eps). False-positives on ViT-style architectures because the cls token at layer 0 (right after patch_embed) has anomalously small magnitude (~0.3-1.5), inflating the ratio even on healthy BP-trained ViTs. New metric: max_l(||h_{l+1}|| / ||h_l||) — the largest single-block residual amplification. Architecture-invariant. Calibration: - BP-trained, late training: <5x per block - BP ViT, early epochs (cls token resolving): 13-25x max - DFA-trained ResMLP/ViT: 100-4000x per block Threshold raised from 10 to 50 to sit cleanly between healthy-early- training (max 25) and failure-regime (min 100). Re-verifications: - smoke test (BP/DFA/EP): all 3 verdicts unchanged - random init (3 seeds): trustworthy on all 3 - 5-method audit table single-seed: identical verdicts - decision-utility ablation: identical (still 0/5 by S1, 3/5 by S_full) - temporal evolution 3-seed: (b) now fires first at ep 3-4, (a) at ep 8-11. Both well before training ends. The 'protocol fires ~92 epochs early' story still holds. - ViT temporal evolution: BP no longer false-fires; DFA fires (a) ep 1, (b) ep 3 — protocol works on the second architecture.
2026-04-07Add reproducers for pitfalls 1-3 in CHECKLIST.mdYurenHao0426
Each bug from the catalog has a synthetic reproducer that runs in <1 sec without GPU: Bug 1: x.norm(-1) on a 2x2 tensor returns 1.143 (L_{-1} of whole tensor) instead of [5, 10] (per-row L_2 along dim=-1). Bug 2: F.cosine_similarity(a, b) with ||b||=5e-10 returns +0.000905 instead of the true +0.018101. The clamp (eps=1e-8) underestimates the divisor 20x. Bug 3: 5e-10 in fp16 -> 0 (underflows smallest subnormal ~6e-8). Downstream F.cosine_similarity returns NaN. bf16 works because it shares fp32's exponent range. Bugs 4-6 (Bs reproducibility, aggregation, layer-0 dominance) require a trained network and are demonstrated inside audit_table and ablation_decision_utility.
2026-04-07Temporal evolution 3-seed: protocol fires at DFA epoch 3-4 on all seedsYurenHao0426
s42: (a)+(b) fire at epoch 4, DFA final acc 0.3076 s123: (a)+(b) fire at epoch 4, DFA final acc 0.3203 s456: (a)+(b) fire at epoch 3, DFA final acc 0.2998 BP never fires on any seed (final acc 0.61-0.63). The 'protocol catches it 96 epochs early' finding is fully reproducible across seeds.
2026-04-07Add temporal diagnostic evolution: protocol fires at epoch 4 of DFAYurenHao0426
Replays per-epoch logged data from results/snapshot_evolution_v2/ through the protocol thresholds. Result: diagnostics (a) ||h_l|| explosion AND (b) ||g_L|| at floor BOTH first fire at epoch 4 of DFA training. At that point, DFA test acc is 0.308 — its final value at epoch 100 is also 0.308. The protocol could have walked back the headline 96 epochs before training finished. DFA's gamma hovers at 0.087-0.107 for all 100 epochs. A reviewer looking at acc+gamma would conclude 'DFA is hovering at 31% acc with ~0.10 alignment, both reasonable'. Wrong on both counts. BP never fires any diagnostic at any epoch. Stays bounded at ||h_L||~200, ||g_L||~3-5e-5, accuracy climbs to 0.61. This is the temporal validation of decision utility: the protocol catches the pathology AS IT HAPPENS, not just retrospectively.
2026-04-07Add random-init sanity check: protocol does not flag untrained networksYurenHao0426
3-seed random init ResMLP gives chance accuracy (~10%) but the protocol verdict is 'trustworthy' on all 3 seeds: - residual norms ~8.7 across all layers (no growth, bounded) - BP gradient norms ~8e-3 (healthy, well above 1e-7 floor) - cross-batch stability 0.08-0.18 (in the BP/EP range) This is the answer to the likely reviewer question: 'is your protocol just flagging anything that doesn't perform well?' Answer: no. Random init is at chance and the protocol passes it. The walked-back trained methods are walked back because of the *measurements*, not because of the accuracy. Notable: random init g-norms (8e-3) are actually HIGHER than BP-trained ones (4e-4) — BP training reduces the gradient magnitude as loss decreases. So the protocol distinguishes 3 distinct regimes: (1) untrained healthy, (2) trained-and-still-healthy (BP/EP), (3) trained-into-pathology (DFA/SB/CB).
2026-04-07Audit table extension to 3 seeds (s42/s123/s456)YurenHao0426
3 seeds × 5 methods × 4 diagnostics = 60 measurements. Key reproducibility findings: - BP: trustworthy on all 3 seeds (acc 0.61-0.62, h_L ~200, g_L ~3-4e-4) - EP: trustworthy on all 3 seeds (acc 0.29-0.36, h_L 3-8e3, g_L ~1e-4) - DFA, SB, CB: walked back on all 3 seeds × all 3 of (a)/(b)/(d) Diagnostic (c) is bimodal across seeds — confirms the prior memory finding: - DFA s42=0.047 (noise), s123=0.436 (drift), s456=-0.005 (noise) - SB s42=0.992 (drift), s123=0.561 (drift), s456=0.035 (noise) - CB s42=0.352 (drift), s123=0.250 (~edge), s456=0.518 (drift) (c) catches different methods on different seeds. (a)/(b)/(d) catch all 3 failing methods on all 3 seeds — robust binary detection.
2026-04-07Add protocol decision-utility ablation tableYurenHao0426
Builds on the 5-method audit JSON. For each method, evaluates 7 reporting strategies (S0=acc only, S1=+Γ field standard, S2-S5=+single diagnostic, S_full=full protocol), and emits the verdict each strategy would have reached. Result: 3 of 5 methods (DFA/SB/CB) are walked back by S_full but NOT by S1. Each of (a)scale, (b)floor, (d)frozen is independently sufficient for binary detection of those 3 failures. Diagnostic (c)stability adds sub-mode discrimination (drift vs noise) but not new positive detections. This is the §3 protocol decision-utility evidence.
2026-04-07Add audit table example: protocol applied to BP/DFA/SB/CB/EPYurenHao0426
5-method audit table on 4-block d=256 ResMLP CIFAR-10 seed 42: - BP: trustworthy (acc 0.615, h_L=2e2, g_L=4e-4, stab 0.099) - DFA: walked back via (a)+(b)+(d) — h_L=4e8, g_L=4e-9, undercuts frozen - State Bridge: walked back via all 4 diagnostics — stability 0.992 is the cleanest possible drift-dominated case - Credit Bridge: walked back via all 4 — stability 0.352, also drift mode - EP: trustworthy (acc 0.359, h_L=3e3, g_L=2e-4, stab -0.036) — paper's internal control case This is the §2 audit evidence for the main-track paper. Confirms that standard headline acc + Γ silently fails on 3 of 5 methods on this architecture, while the 4-diagnostic protocol catches all three.
2026-04-07Add FA diagnostic protocol reference implementationYurenHao0426
Codex round 15 #1 priority for the E&D-track paper: - protocol/protocol.py: 4 diagnostics (residual norms, BP grad norms, cross-batch direction stability, and a frozen-baseline comparator) - protocol/report.py: DiagnosticReport with per-diagnostic verdicts and pretty-printer - protocol/smoke_test.py: validates BP/DFA/EP checkpoints produce the expected verdicts (BP/EP trustworthy; DFA walked back via residual explosion + BP grad at floor) - protocol/README.md: usage, audit cases, threshold rationale - protocol/CHECKLIST.md: 6 evaluation pipeline pitfalls (norm(-1), cosine_similarity eps clamp, fp16 underflow, Bs reproducibility, aggregation, layer-0 dominance) - protocol/REPORTING_TEMPLATE.md: per-method fillable form for FA papers