Skip to content

fix(ci): the dependency-scale dominance corpus was vacuous too - #7460

Merged
proggeramlug merged 2 commits into
mainfrom
fix/dep-corpus-vacuous
Aug 5, 2026
Merged

fix(ci): the dependency-scale dominance corpus was vacuous too#7460
proggeramlug merged 2 commits into
mainfrom
fix/dep-corpus-vacuous

Conversation

@proggeramlug

@proggeramlug proggeramlug commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

#7452 restored the curated dominance corpus and missed its sibling. Same defect, same one-line cause.

The checker anchors on @js_shadow_slot_bind call sites; statepoints became the default root lowering in #7370 and express roots as gc.statepoint relocation bundles instead. So the dependency corpus was emitting:

before after
modules 81 81
bind call sites 0 7719
functions checked 12899

CI's own floors say what this corpus is supposed to look like. The step comment reads "81 modules, ~12900 functions, ~7700 root stores" and sets --min-binds 4000. The fixed corpus measures 81 / 12899 / 7719 — the floors were written against the shadow-stack lowering, and this restores exactly the state they were set from. That correspondence is the strongest evidence the fix is right rather than merely green.

Both gated arms now exit 0, --seeded-violations reports 40 planted / 40 caught / 0 MISSED, and --unrooted-allocas --moving-only reports 0 over 12843 gc-capable allocas.

Why this one matters more than the curated corpus

#7280 created it because the curated corpus reads zero while twenty lines of stock zod fault deterministically under the from-space protector — "25 curated files passing while a real dependency fails is not noise, it is the corpus measuring the wrong population." Leaving it measuring nothing defeats the entire reason it exists, and it would have gone on reading zero for a reason that has nothing to do with zod.

Same caveat as #7452: this gates the shadow-stack lowering, which is no longer the default where the runtime can walk frames. The statepoint lowering still has no equivalent static check, and lowering the floor to make the statepoint corpus pass would have produced a green tick over an empty corpus.

Summary by CodeRabbit

  • Bug Fixes
    • Corrected dependency-scale garbage-collection validation by using shadow-stack lowering.
    • Restored detection of shadow-slot binding call sites and expected root-store and function counts.
    • Preserved moving-loop polling and inline shadow-slot behavior.

Ralph Küpper added 2 commits August 5, 2026 17:20
#7452 fixed the curated corpus and missed this one. Same cause: the
checker anchors on @js_shadow_slot_bind call sites, statepoints became
the default root lowering in #7370 and express roots as gc.statepoint
relocation bundles instead, so the corpus carried 81 modules with ZERO
of the checker's subject.

  before: 81 modules, 0 bind call sites
  after:  81 modules, 7719 bind call sites

CI's own floors say what the corpus is supposed to look like -- the step
comment reads '81 modules, ~12900 functions, ~7700 root stores' and sets
--min-binds 4000. The fixed corpus measures 81 / 12899 / 7719, i.e. the
floors were written against the shadow-stack lowering and this restores
exactly the state they were set from.

Both gated arms exit 0 with 40/40 seeded violations caught.

This is the corpus #7280 created BECAUSE the curated one reads zero while
twenty lines of stock zod fault, so leaving it measuring nothing defeats
the reason it exists.
@proggeramlug
proggeramlug merged commit a5478e6 into main Aug 5, 2026
@proggeramlug
proggeramlug deleted the fix/dep-corpus-vacuous branch August 5, 2026 15:21
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@proggeramlug, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 1 minute

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 4abf76ec-0a61-4616-8754-6db7e3381e0b

📥 Commits

Reviewing files that changed from the base of the PR and between 942c878 and 7efca39.

📒 Files selected for processing (2)
  • changelog.d/7460-dep-corpus-vacuous.md
  • scripts/gc_root_dominance_dep_corpus.sh
📝 Walkthrough

Walkthrough

The dependency-scale GC root-dominance corpus now uses shadow-stack lowering. This restores js_shadow_slot_bind call-site detection and documents the expected validation results.

Changes

GC root-dominance corpus

Layer / File(s) Summary
Enable shadow-stack corpus validation
scripts/gc_root_dominance_dep_corpus.sh, changelog.d/7460-dep-corpus-vacuous.md
The corpus compilation sets PERRY_RS4GC=0 while retaining moving-loop polling and inline shadow-slot settings. The changelog records the resulting metrics and validation checks.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • PerryTS/perry#7452: Both changes set PERRY_RS4GC=0 to restore shadow-stack lowering and js_shadow_slot_bind detection.
  • PerryTS/perry#7415: Both changes update GC root-dominance corpus scripts to use shadow-stack lowering.
  • PerryTS/perry#7198: This change enables the corpus output required by the related GC root-dominance checker workflow.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/dep-corpus-vacuous

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant