Problem
Noema has historical evidence of required GitHub Actions runs remaining queued without runner assignment or logs, but current evidence does not support a repository-wide hosted-runner outage. Protected main integrated #76 at c85d710804139c0697d7ef8fa47d02b1389e6d84, and multiple post-integration PR heads receive GitHub-hosted runners normally.
The remaining repository-owned work is to integrate a bounded runner-assignment diagnostic without regressing the clean dependency/package-manager control plane, exercise it from protected source, and keep any historical organization/platform cause unresolved unless authorized evidence proves one.
Fresh current evidence
Therefore the following hypotheses are falsified for the observed current repository state:
- Actions globally disabled for Noema;
- GitHub-hosted
ubuntu-latest universally unavailable;
- every current workflow stuck before assignment.
These observations do not identify the cause of historical stalls.
Repository-owned diagnostic lineage
Draft #94 (feat/actions-runner-assignment-audit-on-toolchain) is the current implementation owner. It preserves #91's deterministic Node/npm/install-script/lockfile controls and adds the read-only operations:runner-assignment evidence plane.
The evaluator separates:
PASS: runner 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 operator reads fully paginated filter=all workflow-job evidence and binds selected runs to one exact pull-request source head. It cannot satisfy a required Check, formal review, merge, release or deployment gate.
The current successor also narrows the gh child-process environment: only PATH, the read-only GH_TOKEN, pinned GH_HOST=github.com, and NO_COLOR=1 cross the subprocess boundary. Ambient GITHUB_TOKEN, NVIDIA credentials, Maintainer/Reviewer App material, proxy variables and HOME-scoped credentials are excluded rather than inherited through process.env.
#91 is not a causal dependency of runner assignment; it is the source-control baseline that must not be regressed. Safe integration order is:
#91 protected integration
→ rebuild/refresh #94's bounded runner-assignment delta onto the then-current protected lineage
→ fresh application CI/reviewer/Security Scan/review evidence
→ protected-main operational runner-assignment exercise
Remaining historical RCA questions
Repository-visible evidence cannot establish:
- organization/enterprise Actions enablement or policy history;
- billing/spending/usage holds where applicable;
- hosted-runner or runner-group access history;
- organization-wide concurrency/queue saturation at historical timestamps;
- enterprise IP allow-list/policy effects;
- GitHub platform incident/provider contribution at the affected timestamps.
Do not infer any of these from a queued state alone.
Acceptance criteria
Repository-owned controls
Organization/platform RCA
Guardrails
Do not merge with queued/pending/failed required checks; do not change runs-on merely to hide an unproven organization configuration issue; do not remove reviewer/security/coverage/dependency gates; do not create no-op replacement statuses; do not label environment/dependency waits as runner allocation failures without isolated evidence.
Related: #27, #29, #77, #79, #91, #94
Problem
Noema has historical evidence of required GitHub Actions runs remaining
queuedwithout runner assignment or logs, but current evidence does not support a repository-wide hosted-runner outage. Protectedmainintegrated #76 atc85d710804139c0697d7ef8fa47d02b1389e6d84, and multiple post-integration PR heads receive GitHub-hosted runners normally.The remaining repository-owned work is to integrate a bounded runner-assignment diagnostic without regressing the clean dependency/package-manager control plane, exercise it from protected source, and keep any historical organization/platform cause unresolved unless authorized evidence proves one.
Fresh current evidence
4ee417372c7a7e084767b50692c376bf03ff4b0a: application CI, reviewer-ci and central Security Scan terminal-success.ebde3720ee27292be0ce3315986e0438dd66af9f: application CI, reviewer-ci and central Security Scan terminal-success.4b3a6d7896ae1c28de02aecd2542b62b0dcd1937completed application CI31378206257and reviewer-ci31378206300successfully. Central Security Scan is absent on the feature-base stack and is therefore non-passingdefer_until_trigger, not scanner success.Therefore the following hypotheses are falsified for the observed current repository state:
ubuntu-latestuniversally unavailable;These observations do not identify the cause of historical stalls.
Repository-owned diagnostic lineage
Draft #94 (
feat/actions-runner-assignment-audit-on-toolchain) is the current implementation owner. It preserves #91's deterministic Node/npm/install-script/lockfile controls and adds the read-onlyoperations:runner-assignmentevidence plane.The evaluator separates:
PASS: runner 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 operator reads fully paginated
filter=allworkflow-job evidence and binds selected runs to one exact pull-request source head. It cannot satisfy a required Check, formal review, merge, release or deployment gate.The current successor also narrows the
ghchild-process environment: onlyPATH, the read-onlyGH_TOKEN, pinnedGH_HOST=github.com, andNO_COLOR=1cross the subprocess boundary. AmbientGITHUB_TOKEN, NVIDIA credentials, Maintainer/Reviewer App material, proxy variables and HOME-scoped credentials are excluded rather than inherited throughprocess.env.#91 is not a causal dependency of runner assignment; it is the source-control baseline that must not be regressed. Safe integration order is:
Remaining historical RCA questions
Repository-visible evidence cannot establish:
Do not infer any of these from a
queuedstate alone.Acceptance criteria
Repository-owned controls
nanoidblocker is removed from protected main.ghsubprocess from inheriting unrelated model/repository/App/proxy credentials.Organization/platform RCA
Guardrails
Do not merge with queued/pending/failed required checks; do not change
runs-onmerely to hide an unproven organization configuration issue; do not remove reviewer/security/coverage/dependency gates; do not create no-op replacement statuses; do not label environment/dependency waits as runner allocation failures without isolated evidence.Related: #27, #29, #77, #79, #91, #94