Parent: #467
Synchronous iterator protocol instructions still exit to bytecode before their effects. At 136178a, warmed for-of return/break/exhaustion and array-binding probes produce real optimizer artifacts, but each exits before iter_of; its descriptor belongs to the interpreter-owned side-exit metadata rather than an emitted runtime operation. assert_iter_result, iter_close, and iter_close_completion likewise remain interpreter-owned terminals. The same probes return [1,7,6,1] in Node, JavaScriptCore, and zig-js.
Implement these four effects through canonical semantics with exact pre-effect and completed-effect recovery. Preserve selected iterator identity, receiver, single evaluation, original throw-completion precedence, handler state, roots, and callback-consumed step budgets. Keep asynchronous iterator suspension, for-in enumeration, and remaining general control in #467.
Acceptance:
- SSA and native metadata verifiers cover exact input/output shapes, including the preserved completion pair.
- Executable admission tests demonstrate each instruction in real native artifacts; no blanket semantic fallback is counted as native coverage.
- Forced off/on differentials cover getters/proxies, invalid results, missing/noncallable/throwing return methods, normal and abrupt completion, recursion, GC, budget/termination, seeded serialized/no-GIL runs, and allocation failure.
- Debug, ReleaseSafe, unsuppressed TSan, focused JIT/VM/concurrency, relocation inventory and threadfuzz pass. Compare exact before/after test262 failure sets with nonzero denominators.
- Document the bounded coverage precisely; keep #467 open. The cold combined unit link remains the separate human memory-policy blocker in #933.