Parents: #465, #498 Related: #728, #729, #735, #736
Problem
tryRunNativeDirectCall constructs a bounded native slot array by copying argument i into slot i. That identity contract is valid only for simple formal lists. Named rest chunks from #735 already require VM activation entry to allocate/bind a rest Array, and #736 will give destructuring formals hidden raw-input slots plus a bytecode BindingInitialization prologue. The direct native path does not currently reject Chunk.has_non_simple_parameters, so a hot eligible artifact could bypass those entry semantics.
Scope
- Fail closed before native direct-call selection for every chunk with non-simple parameter metadata.
- Preserve normal VM execution and native tiering inside the function body after exact activation entry; only the activation-eliding direct leaf path is refused.
- Add a deterministic hot-call witness proving named rest results remain exact and the direct-native hit counter does not advance.
- Keep the guard metadata-only, O(1), and shared-chunk/no-GIL safe.
No-workaround rules
- Do not disable JIT globally, suppress tiering, rewrite the function, guess slot identity, or claim non-simple native entry support.
- No stacks, queues, jobs, Promise, microtask, Worker lifecycle, or Map/Set iterator changes.
Acceptance
- A focused normal/TSan test heats a named-rest numeric leaf and proves exact results with zero direct-native hits.
- Existing simple-formal direct-native coverage still records hits.
- Full relevant units and exact Test262 accounting retain zero regressions.
- Conventional commit lands directly on main and links #465, #498, #735, and #736.