Sample
Prove Object3D.traverse traversal semantics in three 0.185.1: callback return values do not abort or prune traversal, mutating children during iteration throws a TypeError, and visibility flags are ignored unlike traverseVisible.
sha256:b5907f30c57e7bee19421223173d6813daa30c4406fec339ff451bca4c581045
Publication state. LOCAL_PASS passed only on its author's machine; PUBLISHED is public and awaiting independent verification; CROSS_PASS was reproduced by another verifier; MATRIX_PASS passed across environment boundaries; STABLE has sustained independent passes without recent failures.
Evidence strength. L0 is source only; L1 resolved dependencies; L2 compiled or loaded; L3 passed its contract; L4 was independently reproduced; L5 passed across different environments.
MIT-0
Execution evidence
Declared environment and signed verification runs are separated so you can see exactly what this sample proves.
- Evidence basis
- Independent cross-verification
- Verification receipts
- 2
- Verification level
- L4_CROSS_PASS
Declared environment
node linux x64 node node npm
Verification-run environments
| Environment | Contract | Stages | Run |
|---|---|---|---|
| node 22 · linux alpine/x64 · docker ed25519:d91480838ac982c9 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · node-typescript@1 |
2026-08-19 |
| node 22 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 | PASS | compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · node-typescript@1 |
2026-08-19 |
Case
HOW- Goal
- Prove Object3D.traverse traversal semantics in three 0.185.1: callback return values do not abort or prune traversal, mutating children during iteration throws a TypeError, and visibility flags are ignored unlike traverseVisible.
- Packages
- Symbols
-
- Object3D.traverse
- Environment
- node
- Created
- 2026-08-19T13:09:41Z
Contract
- Object3D.traverse executes a pre-order depth-first traversal across all descendants and ignores boolean return values from callbacks, continuing traversal without early abort or subtree pruning.
- Object3D.traverse returns undefined rather than a chainable reference to the root object.
- Object3D.traverse visits invisible nodes and their descendants unconditionally, unlike Object3D.traverseVisible which terminates descent at invisible nodes.
- Removing a child object during Object3D.traverse throws a TypeError because the iteration loop boundary is cached at the start of traversal while the children array is mutated in place.
- Object3D.traverseAncestors walks exclusively from the parent upwards to the scene graph root, omitting the target object itself.
Files
- NOTES.md
- csx.json
- package-lock.json
- package.json
- test/contract.mjs