ae2e1efb1c
When overriding a List attribute, render the shared AttributeListEditor (whole-list replacement; element type fixed by the base, shown read-only via ShowElementType=false) instead of the single-line input. Loading an existing override decodes its JSON into rows (malformed -> empty); saving encodes rows to canonical JSON with a pre-submit Decode round-trip guard surfacing element errors inline. Clearing removes the InstanceAttributeOverride row (repository-direct, mirroring native-alarm-source overrides). Non-List override UX unchanged.