What happened
#723 introduced a NameError: name 'build_shas' is not defined in release_readiness.py main() (it factored the build-SHA logic into a helper and left the output reference dangling). This crashed the final RRI rollup of every release_readiness.py run — surfaced live when the Phase-3 VM sweep @fa97b34 produced all scores then died on the rollup. Fixed in #728.
The real root cause
qa/test_release_readiness.py already has 4 tests that exercise this exact path and fail at the buggy SHA:
test_mixed_build_sha_blocks_release_ready
test_missing_run_build_sha_blocks_release_ready
test_handoff_json_must_prove_app_status_build_sha
test_short_build_sha_prefix_cannot_mix_stale_vm_and_mac_handoff_evidence
They weren't a missing test — CI did not run / gate on qa/test_release_readiness.py when #723 merged. A tested bug shipped because the test wasn't in the merge gate.
Ask
Audit the CI workflow: confirm whether qa/test_*.py (especially test_release_readiness.py, test_release_readiness_scope.py, test_scores_db_comparability.py) run in the PR gate. If not, add them. The fast_gate covers engine tests only; the qa/ release-gate + scoring tests need their own lane so a release_readiness/scores_db regression can't merge green again. Ref #728.
What happened
#723 introduced a
NameError: name 'build_shas' is not definedinrelease_readiness.pymain()(it factored the build-SHA logic into a helper and left the output reference dangling). This crashed the final RRI rollup of everyrelease_readiness.pyrun — surfaced live when the Phase-3 VM sweep @fa97b34 produced all scores then died on the rollup. Fixed in #728.The real root cause
qa/test_release_readiness.pyalready has 4 tests that exercise this exact path and fail at the buggy SHA:test_mixed_build_sha_blocks_release_readytest_missing_run_build_sha_blocks_release_readytest_handoff_json_must_prove_app_status_build_shatest_short_build_sha_prefix_cannot_mix_stale_vm_and_mac_handoff_evidenceThey weren't a missing test — CI did not run / gate on
qa/test_release_readiness.pywhen #723 merged. A tested bug shipped because the test wasn't in the merge gate.Ask
Audit the CI workflow: confirm whether
qa/test_*.py(especiallytest_release_readiness.py,test_release_readiness_scope.py,test_scores_db_comparability.py) run in the PR gate. If not, add them. The fast_gate covers engine tests only; the qa/ release-gate + scoring tests need their own lane so a release_readiness/scores_db regression can't merge green again. Ref #728.