Parent: #465. Related: #808 and #801/#805. Caller-side follow-up: #811.
Confirmed baseline
Engine f2340f2 reproduces nine failing
logical moving-GC cases among fifteen isolated ReleaseSafe tests (five process
aborts, four assertion failures). A failure in the first forced execution mode
stops that logical test; do not count its second mode as executed.
The gaps are continued Proxy target/handler operands across trap lookup and revocation, descriptor values across conversion getters, and retained trap/ target descriptors across nested GetOwnProperty/IsExtensible callbacks. Additional semantic controls expose nested ownKeys invariant ordering, early descriptor-return/throw ordering, accessor validation order, and inherited setters being invoked during descriptor publication.
Implementation and evidence
- Capture and root the validated target/handler before GetMethod, including revocation during a trap getter. Root/reload result objects, target descriptors, value/getter fields, and receivers across their actual observable callbacks.
- Own continued encoded key bytes. Apply nested internal methods, and snapshot the ownKeys nonconfigurable partition once in key order. Ordinary target storage uses attributes without allocating a JavaScript descriptor per key.
- ToPropertyDescriptor validates a getter before reading setter; descriptor publication creates own data fields and never invokes inherited setters.
- 23 actual-moving cases in both forced tiers (46 verified relocations per test configuration), ten semantic controls in both tiers, shared no-GIL four-lane identity checks, and two allocation-failure sweeps pass Debug, ReleaseSafe and unsuppressed Debug+TSan (26 selected tests each).
- 33 paired local witnesses improve 21 -> 33 passing; each candidate witness explicitly passes tree-walker and required bytecode without fallback. Node v24.18.0 independently matches all 33 expected results.
- All 4,048 upstream tests across 14 Proxy/Reflect/Object/expression subtrees remain passing with byte-identical reports: 0 upstream Test262 flips.
- Full sharded Debug: 2,068 passed, one platform skip, zero failures/leaks, 541.0 seconds across four shards.
Landed on origin/main as fix(proxy): retain metadata operands across reentrant traps (#810), authored/committed by Chris without trailers. ReleaseSafe+TSan also passes all 26 focused tests (9.502s). Seeded Debug fuzz passes 400 default and 300 exact-value programs, both from seed 1, with zero failures.
Pushed integration run is queued. Closure still needs integration evidence; prior CI's separate parallel-collection completion failure is tracked in #812, not claimed fixed here. All completed local build caches were removed; reproducing binaries, source hashes, exact fixtures and logs remain available.
This is synchronous helper ownership. It does not redesign native stacks,
queues/jobs, Promise/Worker, Map/Set iterator or native activation lifecycle.
No pinning, stale-pointer recovery, disabled GC, relaxed invariant or sanitizer
suppression was added. Exact fixtures, hashes and logs are retained locally in
/Users/chris/.cache/zig-js-proxy.Hdh6eC.