Resolve a lineage ref against a freshly rebuilt shape with no maintained
role table, re-deriving roles via assignRoles(shape, ref.origin). The ref's
origin must therefore be the role-assignment scheme (e.g. 'box'), and
stability is bounded by that scheme. The primitives ('box', 'cylinder',
'cone', 'sphere') and 'extrude' name faces semantically
(rebuild-stable); other schemes fall back to positional face_N.
Resolve a lineage ref against a freshly rebuilt
shapewith no maintained role table, re-deriving roles viaassignRoles(shape, ref.origin). The ref'soriginmust therefore be the role-assignment scheme (e.g.'box'), and stability is bounded by that scheme. The primitives ('box','cylinder','cone','sphere') and'extrude'name faces semantically (rebuild-stable); other schemes fall back to positionalface_N.