Read interaction templates from node, falling back to the nearest
ancestor that carries any.
Both placements occur in practice, decided by COMPOSITING_ATTRS in
luxar/core/group/compositing.py: a non-compositing attr like link is
copied onto every part_<i> LEAF of a partition (and onto every child of a
substitutive-LOD ladder), while a compositing attr rides the WRAPPER alone.
link is deliberately in the first group — the leaf is what a pick hits —
but the walk upward costs nothing and makes the viewer indifferent to that
choice, including for stores written by hand or by a future adder.
The first ancestor carrying ANY of the three keys wins outright; templates
are not merged across levels, so a leaf declaring only copy does not
silently inherit a grandparent's link.
Read interaction templates from
node, falling back to the nearest ancestor that carries any.Both placements occur in practice, decided by
COMPOSITING_ATTRSinluxar/core/group/compositing.py: a non-compositing attr likelinkis copied onto everypart_<i>LEAF of a partition (and onto every child of a substitutive-LOD ladder), while a compositing attr rides the WRAPPER alone.linkis deliberately in the first group — the leaf is what a pick hits — but the walk upward costs nothing and makes the viewer indifferent to that choice, including for stores written by hand or by a future adder.The first ancestor carrying ANY of the three keys wins outright; templates are not merged across levels, so a leaf declaring only
copydoes not silently inherit a grandparent'slink.