Skip to content

test(gc): retire the obsolete #7254 pin in gc_instrument_smoke.sh — #4644 reclassified the reproducer (output byte-identical to node under the pairing); positive live arm instead - #9975

Closed
proggeramlug wants to merge 1 commit into
PerryTS:mainfrom
proggeramlug:fix/retire-7254-smoke-pin

Conversation

@proggeramlug

Copy link
Copy Markdown
Contributor

Tooling/test only: scripts/gc_instrument_smoke.sh arm 5b and one changelog line. Fixes the gc-stress fan-in red on main (issue #9974, item 4).

Why

Arm 5b pinned #7254's reproducer (test-files/test_gap_repsel_p4a3_ptr_numarray.ts) as "must still panic with stale forwarded pointer under PERRY_GC_SCHEDULE_RATE=1 + PERRY_GC_VERIFY_EVACUATION". It stopped panicking, and the fan-in has been red since 616a2cb. A git bisect run with the smoke script itself as the predicate (release build + the script per step, no skips) names the first silent commit: 9f790a5 (#4644, "allow retained array-growth aliases in copying verification") — the copying-minor verifier now admits a forwarded pointer whose both ends are retained growth arrays, which is exactly the Ptr growth alias #7254's reproducer exercises. #4644's changelog calls the old abort a false positive; this PR proves it for the reproducer: under the pairing the program's stdout is byte-identical to node's and the run is live (12,528 objects copied under the verifier).

What changes

The pinned-regression block is replaced by a positive arm with the same non-vacuity discipline: the #7254 file under the pairing must exit 0, print node's output, and copy > 0 objects under the verifier (the new line: correct output vs node, exit 0, 12528 objects copied under the verifier (live retained-growth coverage)). Two sentences of history stay in the script (#7254#4644 → this arm). The file remains in the ordinary repsel matrix corpus (test-parity/gc_repsel_corpus.txt). Arms 1–4, 5a and 6 are untouched.

Verified locally (macOS arm64)

Full scripts/gc_instrument_smoke.sh run: rc 0 with the new arm reporting; bash -n, diff-check, file-size clean. On Linux the fan-in's smoke step is the proof (local ladder).

Smoke recipe note for future readers: the script exports PERRY_GC_SCHEDULE_ALLOC_KB=0 and PERRY_NO_AUTO_OPTIMIZE=1 globally; a hand-copied arm-5 recipe without them is silent on every tree.

https://claude.ai/code/session_011dhBmdn4vGgNibjo3oZqTo

Replace arm 5b's expected verifier panic with positive correctness and
liveness checks for the retained-growth workload. Compare Perry's stdout
byte-for-byte with Node, require a successful exit, and require copied
objects so the evacuation verifier cannot pass vacuously.

Claude-Session: https://claude.ai/code/session_011dhBmdn4vGgNibjo3oZqTo
@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 59 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 8 included reviews currently available.

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

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: bb70d576-31b3-472c-acba-fbdc566448a7

📥 Commits

Reviewing files that changed from the base of the PR and between 43200e9 and 83b90a0.

📒 Files selected for processing (2)
  • changelog.d/4644-retained-growth-verifier.md
  • scripts/gc_instrument_smoke.sh

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.

@proggeramlug

Copy link
Copy Markdown
Contributor Author

Landed on main via merge train #9978. Validated as a tree: 77 of 80 lint gates pass, and perry-runtime/codegen/hir/stdlib all green (5,980 tests, 0 failures).

The three non-passing gates are accounted for: public-baseline is pre-existing on main (verified on a pristine worktree; red since 2026-07-29), and the two API docs gates are an artifact of this session's CARGO_TARGET_DIR override — regen_api_docs.sh hardcodes $ROOT/target/release/perry. With the binary placed where the script expects, regeneration succeeds and the drift check is clean. Thanks!

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