{ "planPath": "docs/plans/2026-06-13-alarm-subtag-fallback.md", "tasks": [ { "id": 54, "subject": "Task 1: Worker proto \u2014 watch-list, failover config, AlarmProviderMode", "status": "completed" }, { "id": 55, "subject": "Task 2: Gateway proto \u2014 provider status, degraded provenance, mode-changed event", "status": "completed", "blockedBy": [ 54 ] }, { "id": 56, "subject": "Task 3: Proto round-trip tests for new alarm fields", "status": "completed", "blockedBy": [ 54, 55 ] }, { "id": 57, "subject": "Task 4: Subtag value-source abstraction + synthesis state machine", "status": "completed", "blockedBy": [ 54 ] }, { "id": 58, "subject": "Task 5: SubtagAlarmConsumer over the source seam", "status": "completed", "blockedBy": [ 57 ] }, { "id": 59, "subject": "Task 6: COM-backed LmxSubtagAlarmSource", "status": "completed", "blockedBy": [ 57 ] }, { "id": 60, "subject": "Task 7: FailoverAlarmConsumer state machine", "status": "completed", "blockedBy": [ 58 ] }, { "id": 61, "subject": "Task 8: Synthetic GUID + degraded flag on event sink path", "status": "completed", "blockedBy": [ 55 ] }, { "id": 62, "subject": "Task 9: Wire watch-list/failover through AlarmCommandHandler; emit mode-changed", "status": "completed", "blockedBy": [ 58, 60, 61 ] }, { "id": 63, "subject": "Task 10: AlarmsOptions.Fallback + validation", "status": "completed" }, { "id": 64, "subject": "Task 11: Galaxy Repository alarm-attributes discovery query", "status": "completed" }, { "id": 65, "subject": "Task 12: Watch-list resolver (GR SQL + config override)", "status": "completed", "blockedBy": [ 54, 63, 64 ] }, { "id": 66, "subject": "Task 13: Metrics \u2014 provider-mode gauge + switch counter", "status": "completed" }, { "id": 67, "subject": "Task 14: GatewayAlarmMonitor \u2014 arm watch-list, reflect mode, reconcile on switch", "status": "completed", "blockedBy": [ 55, 62, 65, 66 ] }, { "id": 68, "subject": "Task 15: Dashboard \u2014 push provider status + UI badge", "status": "completed", "blockedBy": [ 67 ] }, { "id": 69, "subject": "Task 16: End-to-end fake-worker failover test", "status": "completed", "blockedBy": [ 67 ] }, { "id": 70, "subject": "Task 17: Live subtag smoke test (opt-in)", "status": "completed", "blockedBy": [ 59, 62 ] }, { "id": 71, "subject": "Task 18: Documentation", "status": "completed", "blockedBy": [ 67 ] } ], "lastUpdated": "2026-06-13T13:30:00Z" }