Native VM memory attribution checkpoint (2026-10-12): memory source, native distinct-root repair and verified evidence. Native full-collection analysis records JSC marked graph nodes/references and realm reachability, with engine size estimates plus deduplicated backing allocations. Indexed array capacity corrects the first failed unequal-allocation control. Exclusive/shared/unattributed weights produce estimates and ownership ranges instead of duplicating the whole heap for every context.
Default requests wait for full collection; eager requests trigger it. Results deliver asynchronously on the owning context, overlapping requests retain independent promises, and native requests retire on process/worker/test-realm shutdown. Unequal-allocation, collection timing, overlap and shutdown controls pass. Mixed-root native dispatch now preserves caller context and distinct roots; the original regression arguments/assertions are restored and pass.
54/54 Debug steps; 27 native groups; 55 unchanged pinned originals: 179 passed cases plus thirty-eight process checks, zero failures/skips/filters and two TODOs. Fourteen ABI controls (452 assertions) and 32 report-validator controls pass. All 1676 artifacts and 251 replayed report outcomes validate, retaining 26 negatives. Ten source hashes match tested bytes; explicit Pickier scans retain one existing error and eleven warnings, zero new findings. Formatting/docs paths pass. Allocation, compile, disk, stale-cache and both mixed-root repair failures remain visible.
Separate lifetime failure remains: evaluated contexts stay reachable after references are dropped. An unused context collects; a control that never calls measureMemory and installed Bun both retain evaluated contexts. The graph keeps that live row and the unchanged retirement assertion remains failed under #885. #870 stays open. Copy-on-write/shared backing proof, every memory type, profiler interactions and platform/Release/ASAN/full-suite proof remain incomplete. General Promise/native producers/transfer #877, directory #878, corpus #876, context #871/#856, performance #869/#873/#874/#872 and HTTPS #875/#532 remain open. Two TODOs receive no pass credit; known crash controls were not rerun.
Source 5808f41 brings the pinned VM module and its connected native context/Script/module implementations into Home ownership. The selected ordinary conformance scope passes, but vm.measureMemory() is not complete.
The pinned JavaScript implementation reads bun:jsc.memoryUsage() for the whole heap, then attributes the same current/peak range to each tracked context. That matches the result shape but does not establish real per-context accounting. Summary/detailed totals, context attribution, collection timing and context lifetime must derive from actual engine accounting rather than duplicated heap estimates.
Acceptance:
- Implement actual current-context and other-context memory ownership measurements.
- Preserve options validation, experimental warning behavior, eager/default execution semantics and asynchronous results.
- Verify unchanged memory-specific original tests alongside real multi-context allocation/collection behavior.
- Do not fabricate context totals or treat result-shape checks as measurement correctness.
Parent tracker: #66. This remains separate from ordinary VM/module ownership verification and inspector lifecycle #428.