From 5dcd29000579d9dea626b47f84aa3fdc16700605 Mon Sep 17 00:00:00 2001 From: YurenHao0426 Date: Wed, 22 Jul 2026 12:41:18 -0500 Subject: results: close Oral-A v2 causal-capture gate --- experiments/analyze_oral_a_failure.py | 44 ++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 9 deletions(-) (limited to 'experiments') diff --git a/experiments/analyze_oral_a_failure.py b/experiments/analyze_oral_a_failure.py index 9f84bbf..bf68d12 100644 --- a/experiments/analyze_oral_a_failure.py +++ b/experiments/analyze_oral_a_failure.py @@ -23,6 +23,8 @@ def main(): "--short", default="results/oral_a_short/sdil_channel_gated_lr0.03.json") parser.add_argument( "--gate", default="results/oral_a_full_gate.json") + parser.add_argument( + "--v2_gate", default="results/oral_a_v2_calibration_gate.json") parser.add_argument( "--out", default="results/oral_a_failure_diagnosis.json") args = parser.parse_args() @@ -30,6 +32,7 @@ def main(): full = load(args.full) short = load(args.short) gate = load(args.gate) + v2_gate = load(args.v2_gate) expected = { "mode": "sdil", "depth": 20, "epochs": 200, "vectorizer_mode": "channel_gated", "a_scale": 1.0, @@ -42,6 +45,9 @@ def main(): raise ValueError("full A3 result has tracked source edits") if gate["status"] != "failed" or gate["confirmation_test_seeds_touched"]: raise ValueError("expected a failed A3 gate with untouched confirmation") + if (v2_gate["status"] != "failed" + or v2_gate["confirmation_test_seeds_touched"]): + raise ValueError("expected a failed v2 gate with untouched confirmation") calibration_rows = [] first_nonfinite_epoch = None @@ -82,9 +88,14 @@ def main(): max_mse_power_gap = max(abs(row["mse_to_target_power"] - 1.0) for row in calibration_rows) short_calibration = short["apical_warmup"]["last"] + unit = v2_gate["selected"]["unit_targets"] + structured = v2_gate["selected"]["channel_subspace"] output = { - "protocol": "oral_a_A3_failure_diagnosis_v1", - "source_paths": {"full": args.full, "short": args.short, "gate": args.gate}, + "protocol": "oral_a_A3_failure_diagnosis_v2", + "source_paths": { + "full": args.full, "short": args.short, "gate": args.gate, + "v2_gate": args.v2_gate, + }, "source_commits": { "full": full["provenance"]["git_commit"], "short": short["provenance"]["git_commit"], @@ -113,17 +124,32 @@ def main(): "max_abs_prediction_target_cosine_before_nonfinite": max_abs_cosine, "max_abs_mse_to_target_power_minus_one": max_mse_power_gap, }, + "post_failure_v2_refinement": { + "unit_target_early_third_alignment": ( + unit["metrics"]["early_third_alignment"]), + "unit_target_all_layer_alignment": ( + unit["metrics"]["all_layer_alignment"]), + "structured_early_third_alignment": ( + structured["metrics"]["early_third_alignment"]), + "structured_all_layer_alignment": ( + structured["metrics"]["all_layer_alignment"]), + "structured_gate_status": v2_gate["status"], + }, "diagnosis": { - "classification": "causal_target_not_captured_before_runaway", + "classification": "unit_target_regression_snr_inadequate_before_runaway", "evidence": [ - "prediction-target cosine remains effectively zero", - "calibration MSE remains indistinguishable from target power", + "instantaneous prediction-target cosine remains effectively zero", + "calibration MSE remains indistinguishable from stochastic target power", "target power grows by orders of magnitude before nonfiniteness", - "short-run teaching alignment therefore cannot be attributed to learned A", + "matched frozen-forward unit targets later yield only 0.0011 early-layer alignment", ], - "next_test": ( - "reduce estimator variance by perturbing the representable " - "channel-gated feedback subspace, not every spatial unit"), + "interpretation_limit": ( + "instantaneous target metrics alone do not prove zero conditional " + "learning; structured v2 has low instantaneous cosine yet positive " + "exact-gradient alignment"), + "next_test_outcome": ( + "representable-subspace perturbation improved exact alignment but " + "failed the frozen early-layer causal-capture gate"), }, } os.makedirs(os.path.dirname(os.path.abspath(args.out)), exist_ok=True) -- cgit v1.2.3