Summary
test-files/gc-dep-corpus/main.ts does not link, on a pristine origin/main build:
Undefined symbols: _perry_fn_node_modules_zod_src_v4_core_index_ts__NEVER
_perry_fn_node_modules_zod_src_v4_core_index_ts__brand
...
The failing symbols are the export * re-export set in the currently pinned zod@4.3.5.
Why this matters beyond one corpus
#7803's reproducer is not runnable as written. That issue asks for the zod dep-corpus under PERRY_GC_SCHEDULE_RATE=1 with the quarantine off; the corpus cannot be built at all, so the issue cannot be actioned or refuted until this is fixed. Verified identical on a pristine origin/main worktree — this is not branch-attributable (found while working #7949, gc-handoff/ROOTVEC-NOTES.md).
A dependency corpus that no longer links is also a gate that cannot fail, in the sense CLAUDE.md means: whatever it was meant to cover, it has been covering nothing since the break.
Suggested disposition
Either fix the export * re-export handling for this shape, or regenerate/re-pin the corpus — but say which, because "regenerate the corpus" would silently discard whatever compiler bug the current pin is exercising. If the pin is regenerated, check first whether the symbols are unresolved because of a genuine export * gap; that would be a compiler issue worth its own ticket rather than a corpus refresh.
Related
Summary
test-files/gc-dep-corpus/main.tsdoes not link, on a pristineorigin/mainbuild:The failing symbols are the
export *re-export set in the currently pinnedzod@4.3.5.Why this matters beyond one corpus
#7803's reproducer is not runnable as written. That issue asks for the zod dep-corpus under
PERRY_GC_SCHEDULE_RATE=1with the quarantine off; the corpus cannot be built at all, so the issue cannot be actioned or refuted until this is fixed. Verified identical on a pristineorigin/mainworktree — this is not branch-attributable (found while working #7949,gc-handoff/ROOTVEC-NOTES.md).A dependency corpus that no longer links is also a gate that cannot fail, in the sense CLAUDE.md means: whatever it was meant to cover, it has been covering nothing since the break.
Suggested disposition
Either fix the
export *re-export handling for this shape, or regenerate/re-pin the corpus — but say which, because "regenerate the corpus" would silently discard whatever compiler bug the current pin is exercising. If the pin is regenerated, check first whether the symbols are unresolved because of a genuineexport *gap; that would be a compiler issue worth its own ticket rather than a corpus refresh.Related
ROOTVEC-NOTES.md: zod callsObject.definePropertiesatsrc/v4/core/util.ts:316andsrc/v4/classic/errors.ts:28— one of the sites fix(runtime): root JS values retained in Rust containers across allocations (#7949) #7962 just rooted — and gc: zod dep-corpus under PERRY_GC_SCHEDULE_RATE=1 with the quarantine OFF dies with a rooting-shaped TypeError (seed 1, safepoint 3319) #7803's reportedCannot read properties of undefined (reading 'toString')is exactly what a stale key string in that loop produces. Candidate, not confirmed, and unconfirmable while the corpus does not build.