{
  "planPath": "docs/plans/2026-05-19-notification-outbox-implementation.md",
  "tasks": [
    {"id": 18, "subject": "Task 1: Notification enums", "status": "pending"},
    {"id": 19, "subject": "Task 2: Notification entity POCO", "status": "pending", "blockedBy": [18]},
    {"id": 20, "subject": "Task 3: Type field on NotificationList", "status": "pending", "blockedBy": [19]},
    {"id": 21, "subject": "Task 4: Notification EF configuration + DbSet", "status": "pending", "blockedBy": [20]},
    {"id": 22, "subject": "Task 5: NotificationOutbox repository", "status": "pending", "blockedBy": [21]},
    {"id": 23, "subject": "Task 6: EF migration AddNotificationsTable", "status": "pending", "blockedBy": [22]},
    {"id": 24, "subject": "Task 7: Site/central notification message contracts", "status": "pending", "blockedBy": [23]},
    {"id": 25, "subject": "Task 8: Outbox query/action contracts", "status": "pending", "blockedBy": [24]},
    {"id": 26, "subject": "Task 9: Scaffold ZB.MOM.WW.ScadaBridge.NotificationOutbox project", "status": "pending", "blockedBy": [25]},
    {"id": 27, "subject": "Task 10: NotificationOutboxOptions", "status": "pending", "blockedBy": [26]},
    {"id": 28, "subject": "Task 11: Delivery adapter abstraction", "status": "pending", "blockedBy": [27]},
    {"id": 29, "subject": "Task 12: Email delivery adapter", "status": "pending", "blockedBy": [28]},
    {"id": 30, "subject": "Task 13: NotificationOutboxActor ingest", "status": "pending", "blockedBy": [29]},
    {"id": 31, "subject": "Task 14: Dispatcher loop", "status": "pending", "blockedBy": [30]},
    {"id": 32, "subject": "Task 15: Query, retry, discard, KPI handlers", "status": "pending", "blockedBy": [31]},
    {"id": 33, "subject": "Task 16: Daily purge job", "status": "pending", "blockedBy": [32]},
    {"id": 34, "subject": "Task 17: AddNotificationOutbox DI extension", "status": "pending", "blockedBy": [33]},
    {"id": 35, "subject": "Task 18: Retarget site S&F notification handler to central", "status": "pending", "blockedBy": [34]},
    {"id": 36, "subject": "Task 19: Async Notify.Send + Notify.Status", "status": "pending", "blockedBy": [35]},
    {"id": 37, "subject": "Task 20: Central ingest routing", "status": "pending", "blockedBy": [36]},
    {"id": 38, "subject": "Task 21: Host registration + appsettings", "status": "pending", "blockedBy": [37]},
    {"id": 39, "subject": "Task 22: CommunicationService outbox methods", "status": "pending", "blockedBy": [38]},
    {"id": 40, "subject": "Task 23: Notification Outbox Blazor page", "status": "pending", "blockedBy": [39]},
    {"id": 41, "subject": "Task 24: Health dashboard outbox KPI tiles", "status": "pending", "blockedBy": [40]},
    {"id": 42, "subject": "Task 25: End-to-end integration test", "status": "pending", "blockedBy": [41]},
    {"id": 43, "subject": "Task 26: Full build + suite verification", "status": "pending", "blockedBy": [42]}
  ],
  "lastUpdated": "2026-05-19"
}
