3e58c184f6
gates / gates (push) Successful in 27s
DRILL-night-2026-09-23.md: Parts A-E. 09 §3 decisions 21 (operator word), 22 and 23 (CC unattended, operator may reverse); §6.4 parts 4 and 6 (catalog half) shipped; §6.1a residuals R-658/R-659. Register 330 -> 336: R-651..R-660 opened (R-658 and R-659 P1), R-650/R-640/R-499/R-626 closed. Capability map, nightly rotation (opengist), STATUS (one question: the floor), CONTEXT, REPORT. The floor stays 0.266.0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
22 lines
1.0 KiB
Bash
Executable File
22 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# run chaos rounds $1..$2 in order; stop on a lost seed A (the brief's stop rule), evidence per round
|
|
cd "$(dirname "$0")"
|
|
for n in $(seq $1 $2); do
|
|
[ -f chaos/STOP ] && { echo "STOP file present — not starting round $n"; exit 0; }
|
|
python3 -u chaos.py round $n > chaos/round-$(printf %02d $n)-run.txt 2>&1
|
|
python3 - "$n" <<'PY'
|
|
import json, sys
|
|
n = int(sys.argv[1])
|
|
r = json.load(open(f"chaos/round-{n:02d}.json"))
|
|
rb = r.get("readback") or {}
|
|
lost = [k for k, v in rb.items() if k == "A" and v is False]
|
|
print(f"round {n}: action={r['action']} accident={r['accident']} steady={r.get('time_to_steady_s')} readback={rb} events={len(r.get('events') or [])}")
|
|
held = ((r.get("after") or {}).get("state") or {}).get("hold_reason")
|
|
if lost and held:
|
|
print("seed A unreadable because the app is HELD (stopped by design) — recovery is checked by the restore route, not a stop")
|
|
elif lost and r["action"] not in ("remove",):
|
|
open("chaos/STOP", "w").write(f"round {n}: seed A did not read back — the stop rule\n")
|
|
print("STOP written")
|
|
PY
|
|
done
|