feat(paint-slots): authored item materials + unified slot painting
Phase 1 + paint unification of the paint-slots plan.
- core: scene-material data layer (materials map mirroring collections,
undo/partialize/setScene full-graph support), SceneMaterial schema,
scene:/library: MaterialRef helpers + parseMaterialRef, slot id helpers
(deriveSlotId/slotLabelFromId), slots map on ItemNode, hitObject on
PaintResolveArgs, optional PaintCapability.commit.
- viewer: resolveMaterialRef (library:/scene: -> three material, null on
dangling).
- nodes(item): renderer keeps authored GLB materials for slot-authored
assets and applies per-slot overrides per-instance (never mutates the
shared cached GLB); textures-off still collapses to furnishing role;
non-authored items unchanged. Item paint capability + registration.
- editor: item joins the unified (nodeId, slotId) paint dispatch; item
paint target + slot reset.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>