What happened
#437 (batched pre-export terminal gates) accidentally deleted the release H5 write while inserting the batched raise:
release_engine.write_dataset(export_frame, dataset_path, period=PERIOD)
was collapsed into the bare dataset_path = artifact_root / DATASET_FILENAME assignment. Since #437 merged, no release run has written its export H5.
Observed blast radius (Build M attempts 13/14)
The gate did its job; the write restoration is the fix (see the PR closing this issue).
The structural hole
CI passed on #437 because no test runs main() to completion: the only main()-level test (test_main_writes_diagnostics_before_post_calibration_gate_failure) deliberately stops at the batched gate failure, so a deletion on the green path after the raise is invisible to the suite.
Remedy (follow-up, not the hotfix):
- Extract the ~1,100-line monkeypatch fixture of the gate-failure test into a reusable harness that can also drive main() PAST the gates (fake engine with a recording
write_dataset, passing coverage/parity gate stubs, sentinel-checking smoke factory) to a designed stop.
- Green-path assertions:
write_dataset called exactly once with artifact_root/DATASET_FILENAME, strictly after the batched raise point and before the smoke factory reads the path; the smoke factory must observe the just-written file, not a pre-existing one.
- Until then, the hotfix PR pins the ordering contract with an AST-level test (write between batched raise and smoke) that fails when the call is absent.
What happened
#437 (batched pre-export terminal gates) accidentally deleted the release H5 write while inserting the batched raise:
was collapsed into the bare
dataset_path = artifact_root / DATASET_FILENAMEassignment. Since #437 merged, no release run has written its export H5.Observed blast radius (Build M attempts 13/14)
dataset_path— which still held attempt 10's July-15 artifact (pre-keogh-swap Keogh carriers lack selection support in the frozen rmloss100 57k: protect-swap for Build M + restoration-time support checks #434, pre-Pin signed sparse QRF outputs' net mass to the donor instrument (farm sign flip; #432) #435). Attempt 14 therefore failed keogh with a score of +$11,809, byte-identical to the pre-swap runs, despite the frozen selection carrying 13 verified keogh carriers at $148.97M.dataset_sha = _sha256(dataset_path)) — certifying an artifact from a different run's solve. The smoke gate firing on stale content is the only reason this didn't ship.The gate did its job; the write restoration is the fix (see the PR closing this issue).
The structural hole
CI passed on #437 because no test runs
main()to completion: the only main()-level test (test_main_writes_diagnostics_before_post_calibration_gate_failure) deliberately stops at the batched gate failure, so a deletion on the green path after the raise is invisible to the suite.Remedy (follow-up, not the hotfix):
write_dataset, passing coverage/parity gate stubs, sentinel-checking smoke factory) to a designed stop.write_datasetcalled exactly once withartifact_root/DATASET_FILENAME, strictly after the batched raise point and before the smoke factory reads the path; the smoke factory must observe the just-written file, not a pre-existing one.