Parent: #465. Related: Function.arguments snapshot qualification.
Executed on 5b73904e: both sloppy and strict Reflect.ownKeys(arguments) produce 0,length,length,callee,iterator in tree and required-VM mode. Node and direct system JavaScriptCore both produce 0,length,callee,iterator.
The arguments object uses dense array storage but owns an ordinary length property. Reflection currently emits both the array's synthetic length key and that ordinary property.
Scope: enumerate the ordinary arguments length once, retaining numeric/string/symbol order, deletion and redefinition behavior, proxy invariants, and ordinary array length enumeration. Pin the reference-confirmed behavior across tree/required-VM/native-enabled modes and run exact-parent arguments/Reflect/Object reflection corpus comparisons.
Definition of done:
- Sloppy/strict key lists match both references without a duplicate length.
- Deletion/re-addition/order and ordinary-array controls are pinned.
- Focused Debug/ReleaseSafe/TSan and affected exact-parent corpus outcomes pass.
- Small conventional fix and evidence pushed to main.
The getter/enumerability probe also confirmed that keys, values, entries, assign and propertyIsEnumerable were hiding an enumerable ordinary length, and fast data reads skipped a replacement length getter. Those paths are fixed in the same change. Related snapshot issue: #1092.