summaryrefslogtreecommitdiff
path: root/experiments/kp_stability_margin_development.py
diff options
context:
space:
mode:
authorYurenHao0426 <Blackhao0426@gmail.com>2026-07-22 16:50:44 -0500
committerYurenHao0426 <Blackhao0426@gmail.com>2026-07-22 16:50:44 -0500
commit0ae690e7b3144da2c5b3384cd7169e86529fd26f (patch)
tree7b5416b1dca30598413fb7b4cabd6c2011484b1a /experiments/kp_stability_margin_development.py
parent293785af4c9a556f388f04bcf9599aaee9e9dfd9 (diff)
protocol: freeze stability-margin training screen
Diffstat (limited to 'experiments/kp_stability_margin_development.py')
-rw-r--r--experiments/kp_stability_margin_development.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/experiments/kp_stability_margin_development.py b/experiments/kp_stability_margin_development.py
new file mode 100644
index 0000000..b2e1325
--- /dev/null
+++ b/experiments/kp_stability_margin_development.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+"""Run the frozen S0 training-only stability-margin candidates."""
+import argparse
+import json
+import os
+import subprocess
+import sys
+
+
+MARGINS = {
+ "0p001": 0.001,
+ "0p003": 0.003,
+ "0p01": 0.01,
+ "0p03": 0.03,
+}
+
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--margin", choices=("all",) + tuple(MARGINS),
+ default="all")
+ parser.add_argument("--device", default="cuda")
+ parser.add_argument("--dry_run", action="store_true")
+ parser.add_argument(
+ "--mt1_gate", default="results/kp_innovation_short_gate.json")
+ args = parser.parse_args()
+ with open(args.mt1_gate) as handle:
+ gate = json.load(handle)
+ if (gate.get("protocol") != "kp_mixed_traffic_short_v1"
+ or gate.get("status") != "failed"):
+ raise ValueError("S0 requires the audited MT-1 failure")
+
+ labels = tuple(MARGINS) if args.margin == "all" else (args.margin,)
+ os.makedirs("results/kp_innovation_stability_grid", exist_ok=True)
+ for label in labels:
+ command = [
+ sys.executable,
+ "experiments/diagnose_kp_traffic_nonfinite.py",
+ "--rule", "innovation",
+ "--predictor_mode", "closed_form",
+ "--predictor_every", "0",
+ "--stability_margin", str(MARGINS[label]),
+ "--device", args.device,
+ "--max_steps", "352",
+ "--out", ("results/kp_innovation_stability_grid/"
+ f"margin_{label}.json"),
+ ]
+ print(" ".join(command), flush=True)
+ if not args.dry_run:
+ subprocess.run(command, check=True)
+
+
+if __name__ == "__main__":
+ main()
+