fix(release-gate): a missing report artifact or a sha-less failure fails closed (GST-1263) (#3982)

* fix(release-gate): a missing report artifact or a sha-less failure fails closed (GST-1263)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix: pre-landing review fixes

Review-Finding: p1/red-team#1 reader=red-team
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

---------

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
Garry Tanandcapy-ai[bot] authored and GitHub committed 2026-11-04 02:58:09 +00:00
1 parent 526f604f91
commit 69f0fe181a
6 files changed
+66 -11

No files matched your search

+10 -3
View File
@@ -1166,8 +1166,10 @@ policy read, so no paid work starts and nothing is written. With the block it ru
4. dispatches the full gate on that sha and reads its verdict and flake
records. A case that failed once and passed its one rule-16 rerun is green
and is listed as flaky;
5. records GREEN, RED or INCOMPLETE. An INCOMPLETE gate is re-dispatched once
by the next run, then left for a person;
5. records GREEN, RED or INCOMPLETE. GREEN needs the run's success and a
report that says GREEN, so a missing report artifact is INCOMPLETE. An
INCOMPLETE gate is re-dispatched once by the next run, then left for a
person;
6. on RED, bisects the red cases over main's first-parent commits since the
last green gate (at most 4 rounds, within the spend cap) and records the
first bad commit;
@@ -1175,7 +1177,12 @@ policy read, so no paid work starts and nothing is written. With the block it ru
`checks: write` and runs no repository code: success for a green gate,
failure for a red one, and neutral when the gate has no verdict yet (still
running at the budget, or incomplete), so a later green on the same commit
is not undercut by an earlier failure.
is not undercut by an earlier failure. A run that fails before it has a
commit to gate (a refused policy, unreadable notes, an unresolved branch)
publishes no check run, so it fails the workflow job instead. That failed
job is a red check run on main's head, so release-cut refuses that commit
until a later release-gate run on it succeeds (release-cut reads the
latest check run of each name).
**What release-cut reads.** A GREEN release record on a commit counts as
gated, the same as a successful `main-backstop` check run. A RED record