Insert the plan's middle resolution step for item slots: a curated default baked into the GLB as a per-material 'pascal_material' extra (three's GLTFLoader copies material extras to userData). Resolution per slot is now: node.slots[slotId] override -> pascal_material curated default -> authored GLB material. Bare ids resolve as library:<id>; unresolved refs fall through. Runtime reads only the GLB (no DB). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>