Parent: #498 Related: #1054, #1056, #1059, #1069
The current VM inventory explicitly limits indexed prototype data reads to one hop. An executed module-root witness with an Array receiver, two intervening ordinary objects, and a named-data holder returns the correct sum 42 for four numeric/String reads, but the prototype indexed fast-path counter records 0/4 hits. The witness is pinned in vm: prototype indexed data path covers ordinary ancestor depth.
Scope: extend representation-guarded indexed data reads through ordinary prototype ancestors, using the existing synchronized descriptor snapshots and canonical primitive key rules. No source/body recognizer, computed-result cache, or persistent chain metadata.
Acceptance:
- Numeric and canonical String indexed data reads at arbitrary ordinary depth use the guarded path, with live descriptor/prototype revalidation.
- Own data wins; undefined remains present; getters, Proxies, String exotics, mapped arguments, TypedArrays, module namespaces, host hooks, and restricted ownership retain canonical behavior.
- Pin nearer data, accessor/descriptor changes, deletion, prototype edits, key effects, GC/throw recovery, and actual no-GIL workers.
- Normal, ReleaseSafe, and unsuppressed TSan focused tests pass; exact before/after affected corpus and tree/VM output introduce no new failing paths.
- Update and regenerate the machine-readable quickening inventory and its docs, with no throughput claim.
The executed counter is dispatch attribution, not timing or throughput evidence. Broad #498 performance acceptance remains separate.