feat(operations): audit GitHub Actions runner assignment - #88
feat(operations): audit GitHub Actions runner assignment#88seonghobae wants to merge 17 commits into
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Superseded by dependency-ordered replacement #94. Fresh #94 head |
Purpose
Advance #30 with read-only fail-closed evidence that distinguishes GitHub Actions runner assignment from workflow/test conclusion and from environment/dependency pre-run waits. The diagnostic never replaces or satisfies a required Check.
Fresh identity
main9adb784902cae19a150146a8fadd6a0491f67814.e8f01e7b51dfbb8c74dd145620b853e8d23ac739onfeat/actions-runner-assignment-audit.Test-first boundary
The evaluator/collector/CLI is bounded to selected workflow runs and fully paginated job evidence. It classifies:
PASS: assignment evidence only;PENDING: no isolated runner-allocation conclusion, including environment/dependency waits; nonzero and non-passing;FAIL / runner_assignment_stalled: only when a queued run+job has no assignment evidence anywhere in that selected run beyond bounded grace, or evidence is malformed/stale.The active continuation corrected a false-positive risk where environment protection or
needsdependency waiting could otherwise be aged as runner starvation. No excluded waiting state becomes success.Newly proven #89 dependency
Fresh compare proves #88 and #89 are diverged lines with merge base at protected
main. They overlap two authority-bearing files:package.json: feat(operations): audit GitHub Actions runner assignment #88 addsoperations:runner-assignment; build(reproducibility): restack deterministic npm controls after nanoid #89 establishes package-manager identity / install-script policy and related package metadata.CHANGELOG.md: both add distinct## Unreleasedevidence.Therefore #88 must not be replayed/merged from its current direct-main snapshot after #89 without reconciliation. Current safe order:
This does not make #89 part of runner-assignment semantics; it prevents #88 from regressing the newer package-manager control plane.
Current exact-head evidence
For
e8f01e7b51dfbb8c74dd145620b853e8d23ac739:ci31352334940: terminal failure only at inherited protected-main nanoid audit after runner assignment, install/typecheck, 65/65 files / 662/662 tests, configured statements/branches/functions/lines 100%;Security Scan31352334880: terminal success;reviewer-ci31352334908: terminal success;CI also exposes the separate unreviewed lifecycle-script authority, owned by #77/#79/#89. Current evidence disproves a present repository-wide inability to receive hosted runners, but it does not establish the historical organization billing/runner-group/enterprise-policy cause.
Operator / authority contract
npm run operations:runner-assignmentrequires explicitGH_TOKEN, exact repository/head and bounded selected run IDs; it reads Actions evidence only and writes a bounded audit artifact. It cannot turn queued/pending/failed CI into success, approve a PR, satisfy review, merge, release, deploy, or close #30 by existence alone.Acceptance boundary
No repair/self-modifying workflow, check replacement, audit waiver, protection weakening, synthetic approval, release or deployment authority is introduced.
Related: #27, #30, #75, #76, #77, #79, #89