68548432b3
Aveva-style composition: composing $Sensor into $Pump creates a derived template Pump.TempSensor that inherits from $Sensor and can override values, override script bodies, add new fields, with LockedInDerived on the base preventing specific overrides. Schema sketch: Template gains IsDerived + OwnerCompositionId; TemplateAttribute/Script gain IsInherited + LockedInDerived. TemplateComposition.ComposedTemplateId pivots to point at the derived template (the base is reachable via derived.ParentTemplateId). Phased rollout (9 phases), starting from additive schema, then flow change for new compositions, then EF Core migration of existing data, then resolution, lock semantics, tree UI, derived template edit UI, base template lock-toggle UI, editor metadata simplification (multi-parent picker becomes mostly obsolete — derived templates always have a single owner). Open questions captured at the end for review before phase 1.