mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 03:38:23 +00:00
Closing a PR left "Cancel: PR Runs on Close" (run 36385268627) on pending for hours. The canceller joins the PR orchestrator's concurrency group, so GitHub cancelled the orchestrator run within a second. But a cancel re-evaluates the job-level if: of every live job and spares each one whose condition still holds. The deploy chunks started with always(), which always holds: test-workspace died at 06:11:59, while Chunk 0 kept deploying and its ~60 queued matrix jobs kept waiting for runners. The group stays occupied until the occupant is terminal, so the canceller parked behind the very run it had already cancelled. The chunks, test-runner-smoke, the fork-prereqs gate and the release job now guard with !cancelled(). Outside a cancel it matches always(): they still run after a failed or skipped need. On a cancel it turns false and the job is cancelled with the run. done and report-main-failures keep always(). They exist to report a cancelled run, and a done skipped on cancel would count as a passing required check. The new lint walks every workflow whose concurrency cancels in progress, plus everything it calls transitively, and rejects a job-level always() outside that allowlist. It found the release job, which a line-based grep had missed. It also fails when an allowlisted job stops needing the exemption, and when its scope no longer reaches the deploy workflows, so it cannot go silently empty. Against the pre-fix tree it reports all six offenders. Behaviour change: manually cancelling a release run now stops the retag too. cron-release-highest re-dispatches the release. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Tests 🧪
All automated tests for Infinito.Nexus live here.
| Directory | Type | Guide |
|---|---|---|
unit/ |
Unit tests (isolated, no I/O) | unit.md |
integration/ |
Integration tests (real component boundaries) | integration.md |
external/ |
Opt-in live third-party checks, excluded from make test |
external.md |
e2e/ |
End-to-end Playwright tests | playwright.md |
regression/ |
Regression guard rules | regression.md |
lint/ |
Structural lint checks | lint.md |
Run each suite via the make targets documented in the linked guides.