60695179ee
Code review found a residual silent-data-loss path: a single driver ref (mux ref) can back SEVERAL historized equipment tags via aliasing (identical machines sharing a register — DriverHostActor._nodeIdByDriverRef is a HashSet), each with its own HistorianTagname. The muxRef->single-name map collapsed last-wins, so under alias + divergent overrides only one historian tag got the value and the rest were silently dropped — the exact failure class FU-3 exists to eliminate. Model the fan as muxRef -> HashSet<historianName> and append ONE outbox entry per name in OnValueChangedAsync (a per-name append failure drops only that name and continues). Convergence removes/adds each (muxRef, name) pair individually from the per-ref set, dropping the mux key only when its last name is removed — so removing one alias leaves the shared ref fanning for the others with no mux churn. Tests: aliased-refs-each-get-the-value (one fan → both historian names written), removing-one-alias-keeps-the-ref-registered, and the override-rename test now feeds a value post-rename to prove the write target actually moved to the new name. Runtime 350/0, OpcUaServer 327/0; 0 warnings. Claude-Session: https://claude.ai/code/session_012SDSQ3AcaXqPcBtDESBRii