fix(gc): unblock the poll-reach audit and run it on every PR - #9012
Merged
Conversation
added 2 commits
August 29, 2026 07:23
`--audit-poll-reach` exits 2 on `main`: #8965 added `js_string_concat_value_box` on 2026-08-28 without listing it in POLL_CAPABLE_RUNTIME. It is the exact analogue of `js_string_concat_box` directly above it -- an SSO fast arm, then `js_string_concat_value` as the fallback (string/concat.rs:496), and that callee is already listed -- so this is an omission at introduction, not a judgement call. That audit is an early step of `gc-root-dominance.yml`, ahead of the compiler build, so its failure masks the corpus and checker the workflow exists for (#8821). Note the issue's timeline needs one correction: the 2026-08-15 red was the THIRD wave, cleared by #8823 on 08-25; this is a fresh recurrence from 08-28, which is the pattern the list is designed to catch. Because the recurrence is the norm rather than the exception, also run the audit in `lint`. It is static, build-free and 0.6s including its self-test, while `gc-root-dominance.yml` is label-gated behind `run-extended-tests` and so is SKIPPED on every PR -- it can only report after the fact, on a scheduled `main` run. This is the same argument the runtime GC-pointer holder audit already makes in that file for its own placement: cheap and build-free, so it belongs in a required context. The expensive corpus arms stay where they are; #8821's remaining questions (label-gating the corpus, and #8809/#8810's findings) are untouched.
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThe change classifies ChangesPoll-reach audit
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses item 1 of #8821, and takes the cheap half of item 2. Does not close the issue — the corpus/checker label-gating question and #8809/#8810's findings are untouched.
The current failure
--audit-poll-reachexits 2 onmaintoday:I checked this was genuinely a missing entry rather than something to silence. It is the exact analogue of
js_string_concat_box, listed directly above it: an SSO fast arm returning content-stable bits, thenjs_string_concat_value(prefix, value)as the fallback (string/concat.rs:496) — and that callee is already in the list. An omission at introduction, not a judgement call.One correction to the issue's timeline
#8821 attributes the red to 2026-08-15. That was the third wave, cleared by #8823 on 08-25. The current failure is a fresh recurrence:
js_string_concat_value_boxwas added on 2026-08-28 by #8965, and the audit went red the same day. So this is not one long-running breakage but the second occurrence of the same pattern — which is itself the argument for the second half of this PR.Also: run it where it can prevent the problem
The audit is static, build-free, and 0.6s including its self-test. But it lives only in
gc-root-dominance.yml, which is label-gated behindrun-extended-tests— so it is skipped on every PR and can only speak after the fact, on a scheduledmainrun. And because it is an early step there, ahead of the compiler build, its failure masks the corpus and checker that workflow exists for.So it now also runs in
lint. That is not a new argument — the runtime GC-pointer holder audit in that same file already makes it for its own placement:Had it been there, #8965 would have been told at PR time instead of reddening a scheduled run thirteen days into the previous fix.
The expensive corpus arms stay exactly where they are.
Verification
--self-testOK--self-testruns first and is not decoration — it plants a fixture that makes the audit report, so a green run says the detector works rather than that nothing happened to be wrongall 60 gates passed; 2 CI-only skipped, both new commands picked up and greenSummary by CodeRabbit
New Features
Bug Fixes
Documentation