From 0bfaef245b13d0e2a0d0918c74789dc0238ded74 Mon Sep 17 00:00:00 2001 From: YurenHao0426 Date: Wed, 22 Jul 2026 20:34:18 -0500 Subject: audit: make oral B development gate immutable --- ORAL_B_RECOVERY.md | 4 +++- experiments/analyze_bci_td_development.py | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ORAL_B_RECOVERY.md b/ORAL_B_RECOVERY.md index da018dd..abfcffc 100644 --- a/ORAL_B_RECOVERY.md +++ b/ORAL_B_RECOVERY.md @@ -117,7 +117,9 @@ necessity, innovation identification, and a causal plasticity lesion. The executable runner, complete-grid analyzer, and shell entry point are `experiments/bci_td_run.py`, `experiments/analyze_bci_td_development.py`, and -`experiments/bci_td_development_screen.sh`. None may run before D4 closes. +`experiments/bci_td_development_screen.sh`. None may run before D4 closes. Once +the deterministic R1 gate exists, later invocations may only verify exact +equality and cannot overwrite it. ## R2 frozen untouched confirmation diff --git a/experiments/analyze_bci_td_development.py b/experiments/analyze_bci_td_development.py index 78dbceb..5d97c9d 100644 --- a/experiments/analyze_bci_td_development.py +++ b/experiments/analyze_bci_td_development.py @@ -206,7 +206,12 @@ def main(): "R1 is development evidence and cannot change the paper score"), } if os.path.exists(args.out): - raise FileExistsError(f"refusing to overwrite {args.out}") + with open(args.out) as handle: + existing = json.load(handle) + require(existing == output, + "existing R1 gate differs from deterministic re-audit") + print(json.dumps(output, indent=2)) + return with open(args.out, "w") as handle: json.dump(output, handle, indent=2, sort_keys=True) handle.write("\n") -- cgit v1.2.3