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
gc-root-dominance.yml is structurally unable to report on the thing it exists to check. Over the last 60 runs:
58 skipped
2 failure
0 success
Both failures are scheduled main runs, and both die at the same early step — before the corpus is ever emitted:
run 32820308411 (2026-08-25 07:10, schedule)
job: gc-root-dominance step FAILED: ALLOC_RE symbols that reach a poll-capable one must be listed
job: gc-root-dominance-statepoints step FAILED: ALLOC_RE symbols that reach a poll-capable one must be listed
That is the --audit-poll-reach audit. It exits 2 on all recent scheduled main runs. Every pull_request run is skipped (the job is label-gated behind run-extended-tests).
Consequence
The corpus step (scripts/gc_root_dominance_corpus.sh) and the checker step (scripts/gc_root_dominance_check.py) have never executed in CI. So neither of these has ever been observable at any profile:
CLAUDE.md enumerates four ways a gate can be unable to fail. This hits two of them simultaneously — not in branch protection's required contexts (label-gated, so skipped on every PR) and the gate runs but its subject never did (the one path that does run stops before reaching its subject). A third is arguably in play: a skipped check satisfies a required context.
What needs deciding
Fix the --audit-poll-reach failure so the workflow can proceed to its actual subject, or split that audit into its own job so an unrelated failure cannot mask the corpus and checker.
Decide whether this gate should be label-gated at all. A GC-rooting dominance check that never runs on a PR cannot prevent the class of bug it was written for — and docs/src/internals/gc-rooting-invariant.md describes that class as one this project has shipped repeatedly.
gc-root-dominance.ymlis structurally unable to report on the thing it exists to check. Over the last 60 runs:Both failures are scheduled
mainruns, and both die at the same early step — before the corpus is ever emitted:That is the
--audit-poll-reachaudit. It exits 2 on all recent scheduledmainruns. Everypull_requestrun isskipped(the job is label-gated behindrun-extended-tests).Consequence
The corpus step (
scripts/gc_root_dominance_corpus.sh) and the checker step (scripts/gc_root_dominance_check.py) have never executed in CI. So neither of these has ever been observable at any profile:MAX_SKIPPED=0CLAUDE.md enumerates four ways a gate can be unable to fail. This hits two of them simultaneously — not in branch protection's required contexts (label-gated, so skipped on every PR) and the gate runs but its subject never did (the one path that does run stops before reaching its subject). A third is arguably in play: a
skippedcheck satisfies a required context.What needs deciding
--audit-poll-reachfailure so the workflow can proceed to its actual subject, or split that audit into its own job so an unrelated failure cannot mask the corpus and checker.docs/src/internals/gc-rooting-invariant.mddescribes that class as one this project has shipped repeatedly.Found while auditing #8783 (root-dominance A/B) and while fixing #8810.