Replace every lineage ref in an operation's params with the live entity it
resolves to in shape, recursing into arrays (a fillet's edge list) and
nested plain objects (a { selection: { edge } } options bag). Refs that
can't resolve are left as-is. Role tables are re-derived once per origin and
reused across the whole params map. Lets a replay engine pass stable entity
selections that survive upstream edits.
Replace every lineage ref in an operation's params with the live entity it resolves to in
shape, recursing into arrays (a fillet's edge list) and nested plain objects (a{ selection: { edge } }options bag). Refs that can't resolve are left as-is. Role tables are re-derived once peroriginand reused across the whole params map. Lets a replay engine pass stable entity selections that survive upstream edits.