Repository navigation
feat(pr-require-checks): ignore gate alias jobs in run-shape reads - #1072
Conversation
The required gate job is being renamed: it will display as "CI Status", and until the org ci-gate ruleset requires that context, an alias job named "ci-status" needs the gate, runs if: always() and exits with its result. That job runs on contract-only events too, which breaks three reads in aggregate-results: - job_shape counts it as a job that ran, so a contract-only sibling reads as a full run in flight and yield-to-full-run fails as superseded; - the sibling re-run's contract shape needs exactly one failed job, so a failed contract-only run whose alias also failed is never re-run; - a carried success written before the rename names a gate job by the old name, which gate_step_outcome no longer finds, so every open pull request's carried success is discarded until its next push. The new alias-jobs input lists those names; job_shape and the re-run shape ignore them, and the gate step is also looked up under them. With the input empty nothing changes. Tests cover each read with and without the input. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ddf6551f66
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Review fixes for #1072: - job_shape dropped every alias job, so a contract-only run from before the rename, whose only job that ran is the old gate (now an alias name), read as unknown instead of contract. A run with no job under the current gate name now takes the alias name as its gate. - The re-run wait counted an in-flight sibling's alias job, so a contract-only sibling whose gate had failed while its alias still ran read as a full run, the wait ended, and it was never re-run. The count now leaves aliases out, except in a pre-rename run, where the alias is the gate; with this run's gate name unresolved it leaves them out, which can only lengthen the wait. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
|
claude-security-review reviewed Security review: no findingsI read every hunk of all 4 changed files: What changed: the Checks made
Other notes
critical-findings: 0 |
|
claude-review reviewed No blocking or advisory findings on head 9853c17. I read every hunk of all 4 changed files ( What I checked:
Not raised (below the bar):
Spend: none; this change adds no paid or prepaid cost. |
No related issue: prerequisite for the owner-approved CI Status rollout (2026-11-11 interview, Q26), in which each repository's gate job displays as "CI Status" and an alias job keeps the required context
ci-statusuntil the github-iac ci-gate ruleset switches.Summary
Adds an
alias-jobsinput topr-require-checks/aggregate-results. A job listed there only mirrors the gate's conclusion under the old check name, so the run-shape reads ignore it.Fix
The alias job runs on contract-only events too, which breaks three reads (
run.sh):job_shapecounts it as a job that ran, so a contract-only sibling reads as a full run in flight, andyield-to-full-runfails as superseded.successwritten before the rename names its gate job by the old name.gate_step_outcomeno longer finds it, so every open pull request's carried success is discarded until its next push.With the input empty, behavior is unchanged. README documents the input under the
ci-statusstep options.Verification
bash .github/actions/pr-require-checks/aggregate-results/run.test.sh: all 243 cases pass. New cases cover each read both withalias-jobsand without it (the "without" cases show each break).run.shandrun.test.sh.Related
report-ci-statusalias exception).alias-jobs: ci-status.🤖 Generated with Claude Code
https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe