Skip to content

Unit-test step gets its own cap so a slow run can't cancel the required clippy job - #12551

Merged
gunbai-bot[bot] merged 1 commit into
mainfrom
session/silent-koi-310-unit-timeout
Sep 28, 2026
Merged

gunbai-bot[bot] merged 1 commit into
mainfrom
session/silent-koi-310-unit-timeout

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 28, 2026

Copy link
Copy Markdown
Contributor

Some runs have the non-required rust_unit_tests step (#12450) failing required CI: merge_group run 36431733521 shows it.

Cause. continue_on_error covers a step failure, not a job timeout. The step had no cap of its own. A slow unit run used up the whole 60-minute clippy job cap, GitHub cancelled the job inside the non-required step, and the witnesses aggregate failed on the cancelled job.

Fix, in the model (gunbc.compiler_gate_workflow):

  • compiler_gate_unit_test_step gets its own timeout_minutes, from compiler_gate_unit_test_timeout(). A step timeout ends as a step failure, which continue_on_error does cover, so the job's conclusion no longer depends on the unit step's wall time.
  • compiler_gate_clippy_timeout() is now derived as the step cap plus compiler_gate_clippy_pre_unit_reserve(). The step therefore ends inside the job by construction, not because two literals happen to agree. The job cap is unchanged (50 + 10 = 60); it is not raised to absorb the step.
  • Sizing reads the clippy job records of runs 36424259908 and 36434277095 (the unit step completed) and 36431733521 (the unit step ran past the job cap).

Regenerated .github/workflows/witnesses.yml with tools.generated_artifact_gate main_wet_one. The only change is timeout-minutes on the step.

Proof that an expiring step leaves clippy green: a probe PR is built from this same model with the unit cap set to 1 minute. Its run is linked below once it finishes, and the probe is closed without merging.

🤖 Generated with Claude Code

…step cap + pre-unit reserve

A step-level timeout expires as a step failure, which continue_on_error covers; the uncapped step
instead ran into the job cap, GitHub cancelled the clippy job, and the required aggregate failed
(merge_group run 36431733521).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Sep 28, 2026

Copy link
Copy Markdown
Contributor Author

The proof ran. Probe #12552 is this same model with the unit cap set to 1 minute, which the derivation turns into an 11-minute job. In run 36447742903 the step's annotation reads "The action 'Run the v1 unit tests' has timed out after 1 minutes", and the clippy job concluded success, which is the result the witnesses aggregate reads. So an expiring unit step now ends as a visible step failure, and the job's conclusion no longer depends on it. The probe is closed unmerged.

— sent from silent-koi-310

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Sep 28, 2026
Merged via the queue into main with commit 11acafc Sep 28, 2026
6 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/silent-koi-310-unit-timeout branch September 28, 2026 18:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants