Parent: #465 Related: #1064, #498
Identifier/reference resolution still treats root environment mirror entries as declarative bindings after the corresponding global-object property is gone. Object Get was repaired in #1064; this separate boundary affects reads, typeof, assignment, deletion, inheritance, and warmed VM assumptions.
Executed seven-assertion probe after deleting globalThis.Math:
typeof Math === "undefined".- Reading Math throws ReferenceError.
- Strict assignment to Math throws ReferenceError.
- Sloppy assignment recreates globalThis.Math.
- Sloppy delete of Math succeeds.
- A subsequently inherited Math property supplies the identifier value.
- Deleting a lexical name returns false and preserves a same-named global-object property.
Node returns seven true values. Current tree and required-bytecode binaries return seven false values.
Acceptance:
- Global object environment bindings resolve from live own/inherited property presence and descriptors, without falling back to stale mirror values.
- Captured References preserve strict/sloppy GetValue/PutValue/Delete semantics and declarative lexical/TDZ/const/function-name rules.
- Reuse the canonical Reference pipeline for VM stores where appropriate; remove obsolete duplicate assignment helpers rather than add another fallback.
- Warmed no-JIT/native global proofs miss after deletion, descriptor changes, and relevant prototype mutation.
- Pin deleted builtins/eval globals, inherited properties, lexical name/property collisions, with/eval side effects, GC, and no-GIL behavior against Node.
- Focused normal/unsuppressed TSan and exact before/after global/declaration/eval corpus gates pass.