Resolve all 46 low-severity architecture review findings

This commit is contained in:
Joseph Doherty
2026-09-09 22:56:36 -04:00
parent fef3e7675f
commit 9ee402bbcd
139 changed files with 2621 additions and 1082 deletions
@@ -279,6 +279,9 @@ public class AlarmActor : ReceiveActor
/// </summary>
private void HandleAttributeValueChanged(AttributeValueChanged changed)
{
// Alarm audit rows have no inferred-edge metadata: never assert that an armed
// device publish was caused by the candidate writer. Observed static writes retain it.
var observedSource = changed.SourceExecutionInferred ? null : changed.SourceExecutionId;
// Expression triggers evaluate against a snapshot of every attribute,
// not a single monitored attribute. Keep the snapshot current for every
// change before the IsMonitoredAttribute gate (which does not apply).
@@ -288,7 +291,7 @@ public class AlarmActor : ReceiveActor
// (ParentExecutionId tag-cascade): remember which
// execution (if any) wrote the newest value folded into the snapshot,
// so the off-dispatcher evaluation can attribute its raise to it.
_latestSourceExecutionId = changed.SourceExecutionId;
_latestSourceExecutionId = observedSource;
}
else if (!IsMonitoredAttribute(changed.AttributeName))
{
@@ -300,7 +303,7 @@ public class AlarmActor : ReceiveActor
{
if (_triggerType == AlarmTriggerType.HiLo)
{
HandleHiLoTransition(EvaluateHiLo(changed.Value), changed.SourceExecutionId);
HandleHiLoTransition(EvaluateHiLo(changed.Value), observedSource);
return;
}
@@ -322,7 +325,7 @@ public class AlarmActor : ReceiveActor
_ => false
};
ApplyTriggeredState(isTriggered, changed.SourceExecutionId);
ApplyTriggeredState(isTriggered, observedSource);
}
catch (Exception ex)
{