{ "planPath": "docs/plans/2026-06-11-alarm-followups.md", "designPath": "docs/plans/2026-06-11-alarm-followups-design.md", "branch": "feat/alarm-followups", "baseBranch": "master", "baseSha": "bcb9f45c", "status": "completed", "note": "Resolves the 6 T17-T24 follow-ups. Double-emit = primary-only emission (T1 ScriptedAlarmHostActor alerts-gate + T2 HistorianAdapterActor historize-gate, both on Primary via redundancy-state; OPC UA write + commands stay ungated). T3 Galaxy reconnect recreate. T4 broadcaster health signal. T5 CorrelationId wrapper. T6 Alerts.razor (Timed picker + chip auto-clear + live-pill). T7 ScriptLog.razor live-pill. T8 live-verify. T9 rig cleanup. T10 docs+finish. T1-T5 mutually parallel; T6/T7 after T4 (∥ each other); T8 after 1/2/3/6/7; T9 after 8; T10 after 9. NO bUnit (razor proven by docker-dev /run). NO Configuration/EF change.", "tasks": [ {"id": 235, "planTask": 0, "subject": "T0: Branch + baseline", "classification": "trivial", "status": "completed", "blockedBy": []}, {"id": 236, "planTask": 1, "subject": "T1: Redundancy emit-gate in ScriptedAlarmHostActor (A1)", "classification": "high-risk", "status": "completed", "blockedBy": [235], "parallelizableWith": [237, 238, 239, 240]}, {"id": 237, "planTask": 2, "subject": "T2: Redundancy historize-gate in HistorianAdapterActor (A2)", "classification": "high-risk", "status": "completed", "blockedBy": [235], "parallelizableWith": [236, 238, 239, 240]}, {"id": 238, "planTask": 3, "subject": "T3: Galaxy reconnect recreates a faulted session", "classification": "high-risk", "status": "completed", "blockedBy": [235], "parallelizableWith": [236, 237, 239, 240]}, {"id": 239, "planTask": 4, "subject": "T4: Broadcaster connection-health signal + bridges", "classification": "standard", "status": "completed", "blockedBy": [235], "parallelizableWith": [236, 237, 238, 240]}, {"id": 240, "planTask": 5, "subject": "T5: CorrelationId wrapper for the alarm commands (3b)", "classification": "small", "status": "completed", "blockedBy": [235], "parallelizableWith": [236, 237, 238, 239]}, {"id": 241, "planTask": 6, "subject": "T6: Alerts.razor — Timed-shelve picker + chip auto-clear + live-pill", "classification": "standard", "status": "completed", "blockedBy": [239], "parallelizableWith": [242]}, {"id": 242, "planTask": 7, "subject": "T7: ScriptLog.razor live-pill + reconnect-overlay check", "classification": "small", "status": "completed", "blockedBy": [239], "parallelizableWith": [241]}, {"id": 243, "planTask": 8, "subject": "T8: Live-verify on docker-dev", "classification": "verification", "status": "completed", "blockedBy": [236, 237, 238, 241, 242]}, {"id": 244, "planTask": 9, "subject": "T9: docker-dev rig cleanup", "classification": "trivial", "status": "completed", "blockedBy": [243]}, {"id": 245, "planTask": 10, "subject": "T10: Docs + finish branch", "classification": "small", "status": "completed", "blockedBy": [244]} ], "lastUpdated": "2026-06-15" }