You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Noema must distinguish GitHub Actions runner assignment from a workflow/job that is merely queued. started_at, workflow-level state, a predecessor attempt, a run-wide union of jobs, JavaScript adapter function arity, or non-canonical/invisible runner_name bytes are not runner-assignment authority by themselves.
This issue separates repository-owned evidence classification from organization/platform RCA. A repository diagnostic may classify assignment evidence; it cannot repair GitHub-hosted capacity, billing, enterprise policy, runner-group access, or a GitHub incident, and it cannot substitute for required CI/security/review conclusions.
Protected central .github/main is now ad0779bee66624c3997947d7691f4b0dbb973be1. PR fix(trust): roll audited central workflow source to 49eb9e7 #554 exact 888828dc35a6a45400c3e7fc5784ec7968fa2ba9 owns the narrow fail-closed OIDC job_workflow_sha consumer roll-forward; provider/retry/logging/security implementation remains with central/contextual-orchestrator owners.
Fresh current-generation fix(trust): roll audited central workflow source to 49eb9e7 #554 application CI 34046378057, job 101522050369, is queued with steps=[], runner_id=0, empty runner_name, and runner_group_id=0, while both created_at and started_at are 2026-09-06T16:43:53Z. This is direct current evidence that started_at is not assignment authority.
Fresh current-generation fix(trust): roll audited central workflow source to 49eb9e7 #554 Security Scan 34046378099, scope job 101522051034, shows the same pre-assignment state: queued, steps=[], runner_id=0, empty runner identity, with started_at == created_at. The sibling gitleaks job is skipped and therefore is not an assigned-runner control.
Current owner RCA remains ContextualWisdomLab/.github#712; Noema leaf reruns, no-op commits, gate weakening, or runner-selector churn remain unacceptable substitutes.
Repository-owned acceptance
Preserve required CI/reviewer/security workflows; no synthetic replacement status.
Keep environment/dependency waits distinct from runner-assignment stalls.
Preserve bounded true-stall classification for a queued run/job with no assignment evidence after grace.
Prevent retained GitHub diagnostics from exposing active delegated credentials.
Stop treating timestamps/workflow-level state alone as assignment authority.
Bind fetched run id, exact positive run_attempt, exact current head and exact-attempt job pages; retain run_attempt in runner evidence.
Require the public evaluator itself to reject invalid/missing run_attempt rather than relying solely on the collector.
Treat run-wide filter=all as non-authoritative for current-attempt identity.
Stop treating JavaScript function arity as proof of attempt-scoped reader authority.
Use the hardened owner-only delegated-token capability-file boundary and reject non-canonical path/token authority.
Reject ASCII-control-only and Unicode Control/Format-only runner_name evidence when no positive runner ID exists.
Reject raw runner-name identity containing embedded Unicode Control/Format characters rather than deleting those bytes and promoting the normalized result to assignment authority.
From protected main, exercise operations:runner-assignment against both assigned and genuinely unassigned/stale evidence and retain the bounded receipt. Current exact unassigned specimens include fix(trust): roll audited central workflow source to 49eb9e7 #554 jobs 101522050369 and 101522051034; a positive assigned control must come from the same bounded evidence procedure rather than a predecessor attempt.
Organization/platform RCA
Obtain authorized Actions enablement/hosted-runner policy history if needed.
Check billing/usage restrictions where applicable.
Check runner-group/access and organization concurrency for affected periods.
Check enterprise policy/IP restrictions where applicable.
Compare affected timestamps with GitHub platform incident evidence where available.
Identify a falsifiable external cause or retain it explicitly unresolved when evidence remains insufficient.
Guardrails
Do not merge with queued/pending/failed applicable checks or non-authoritative scanner evidence. Do not change runs-on, remove checks, synthesize statuses, weaken security/review gates, normalize hostile runner-name bytes into trusted authority, duplicate an already-owned dependency-root repair in a later leaf, reopen a proven superseded predecessor without new contrary evidence, repeatedly rerun an unchanged starved head, or reuse predecessor-attempt jobs to hide allocation latency. Keep runner assignment, check conclusion, scanner evidence, formal review, merge, release, deployment, and production evidence separate.
Problem
Noema must distinguish GitHub Actions runner assignment from a workflow/job that is merely queued.
started_at, workflow-level state, a predecessor attempt, a run-wide union of jobs, JavaScript adapter function arity, or non-canonical/invisiblerunner_namebytes are not runner-assignment authority by themselves.This issue separates repository-owned evidence classification from organization/platform RCA. A repository diagnostic may classify assignment evidence; it cannot repair GitHub-hosted capacity, billing, enterprise policy, runner-group access, or a GitHub incident, and it cannot substitute for required CI/security/review conclusions.
Current implementation state — 2026-09-07 KST
main@e26d771470a4ece873c367b40b3cd6cb03ac7de3, the GitHub-verified normal merge commit for fix(trust): rebind audited central workflow source #527..github/mainis nowad0779bee66624c3997947d7691f4b0dbb973be1. PR fix(trust): roll audited central workflow source to 49eb9e7 #554 exact888828dc35a6a45400c3e7fc5784ec7968fa2ba9owns the narrow fail-closed OIDCjob_workflow_shaconsumer roll-forward; provider/retry/logging/security implementation remains with central/contextual-orchestrator owners.34046378057, job101522050369, isqueuedwithsteps=[],runner_id=0, emptyrunner_name, andrunner_group_id=0, while bothcreated_atandstarted_atare2026-09-06T16:43:53Z. This is direct current evidence thatstarted_atis not assignment authority.34046378099, scope job101522051034, shows the same pre-assignment state:queued,steps=[],runner_id=0, empty runner identity, withstarted_at == created_at. The sibling gitleaks job is skipped and therefore is not an assigned-runner control.888828dc...generation has not yet produced a positive assigned control.ContextualWisdomLab/.github#712; Noema leaf reruns, no-op commits, gate weakening, or runner-selector churn remain unacceptable substitutes.Repository-owned acceptance
run_attempt, exact current head and exact-attempt job pages; retainrun_attemptin runner evidence.run_attemptrather than relying solely on the collector.filter=allas non-authoritative for current-attempt identity.runner_nameevidence when no positive runner ID exists.main, exerciseoperations:runner-assignmentagainst both assigned and genuinely unassigned/stale evidence and retain the bounded receipt. Current exact unassigned specimens include fix(trust): roll audited central workflow source to 49eb9e7 #554 jobs101522050369and101522051034; a positive assigned control must come from the same bounded evidence procedure rather than a predecessor attempt.Organization/platform RCA
Guardrails
Do not merge with queued/pending/failed applicable checks or non-authoritative scanner evidence. Do not change
runs-on, remove checks, synthesize statuses, weaken security/review gates, normalize hostile runner-name bytes into trusted authority, duplicate an already-owned dependency-root repair in a later leaf, reopen a proven superseded predecessor without new contrary evidence, repeatedly rerun an unchanged starved head, or reuse predecessor-attempt jobs to hide allocation latency. Keep runner assignment, check conclusion, scanner evidence, formal review, merge, release, deployment, and production evidence separate.Related: #5, #27, #29, #96, #500, #502, #503, #527, #533, #542, #546, #548, #554;
ContextualWisdomLab/.github#712.