1#!/usr/bin/env python2"""Step 12 — Phase 6 robustness suite (hedonic, hazards, AMLI variants; Holm; Table 9).34Usage: .venv/bin/python scripts/12_robustness.py [hedonic|hazards|amli|all] (default all)5Writes results/robustness/*.{json,csv} and paper/tables/tab09_robustness.tex; logs runtime per block.6"""7import json, sys, time8from ucml import robustness as R910t0 = time.time()11what = sys.argv[1] if len(sys.argv) > 1 else "all"12if what == "all":13 S = R.run()14 print(json.dumps({"seconds_total": S["seconds_total"], "hedonic_s": S["hedonic"]["seconds"], "hazards_s": S["hazards"]["seconds"], "amli_s": S["amli"]["seconds"]}, indent=2))15else:16 fn = {"hedonic": R.run_hedonic, "hazards": R.run_hazards, "amli": R.run_amli, "holm": R.holm_primary_tests}[what]17 out = fn()18 print(json.dumps(out if not hasattr(out, "to_dict") else out.to_dict(orient="records"), indent=2, default=float)[:6000])19 print(f"[{what}] {time.time() - t0:.1f} s")20