THREE.JS / FOUNDATIONS 318
Migration belongs at the document boundary.
Three.js loaders deserialize what they receive; they do not negotiate application schema versions or strict registries. Wrap the pinned loader in an explicit envelope, migrate it, validate every reference, then load the result.
The fixture will create a legacy v0 document around one texture-bearing node graph.
- envelope
- —
- UUID remap
- —
- registry
- —
- references
- —
- loader graph
- —
- graph parity
- —
- stock fallback
- —
- backend
- —
- frame samples
- —
- timing
- NOT RUN
Application-owned v0→v1 normalization must happen before Three.js sees the document.
The strict allowlist rejects missing node/material constructors before native fallback behavior can hide a mismatch.
UUID remapping is only safe when node, texture, image, material, and object references remain closed.
Pinned Source is exercised; current-dev TextureSource migration remains an explicit source-review boundary.
MIGRATION / WAITINGEVENTS / —
This harness owns the envelope and validation policy; it does not patch node_modules or claim a Three.js cross-version migration API.
Sources: NodeLoader · NodeMaterialLoader · NodeObjectLoader · ObjectLoader · TSL graph