{
  "planPath": "docs/plans/2026-05-28-mxgateway-data-connection.md",
  "tasks": [
    {"id": 6,  "planTask": 1,  "subject": "Task 1: Packaging foundation (Gitea feed + package refs)", "status": "completed"},
    {"id": 7,  "planTask": 2,  "subject": "Task 2: MxGatewayEndpointConfig type", "status": "completed"},
    {"id": 8,  "planTask": 3,  "subject": "Task 3: MxGatewayEndpointConfigSerializer + tests", "status": "completed", "blockedBy": [7]},
    {"id": 9,  "planTask": 4,  "subject": "Task 4: MxGatewayEndpointConfigValidator + tests", "status": "completed", "blockedBy": [7]},
    {"id": 10, "planTask": 5,  "subject": "Task 5: Client seam interfaces + MxGatewayGlobalOptions", "status": "completed"},
    {"id": 11, "planTask": 6,  "subject": "Task 6: Adapter connect/disconnect/Disconnected + value mapping", "status": "completed", "blockedBy": [7, 10]},
    {"id": 12, "planTask": 7,  "subject": "Task 7: Adapter subscribe/unsubscribe + event routing", "status": "completed", "blockedBy": [11]},
    {"id": 13, "planTask": 8,  "subject": "Task 8: Adapter read/write batch + error classification", "status": "completed", "blockedBy": [11]},
    {"id": 14, "planTask": 9,  "subject": "Task 9: Adapter WriteBatchAndWaitAsync", "status": "completed", "blockedBy": [13]},
    {"id": 15, "planTask": 10, "subject": "Task 10: Adapter Galaxy browse (IBrowsableDataConnection)", "status": "completed", "blockedBy": [11]},
    {"id": 16, "planTask": 11, "subject": "Task 11: RealMxGatewayClient seam implementation", "status": "completed", "blockedBy": [6, 10]},
    {"id": 17, "planTask": 12, "subject": "Task 12: Factory registration + options binding + flatten branch", "status": "completed", "blockedBy": [8, 16, 18]},
    {"id": 18, "planTask": 13, "subject": "Task 13: Rename browse message types to protocol-agnostic", "status": "completed"},
    {"id": 19, "planTask": 14, "subject": "Task 14: Rename browse service + dialog to protocol-agnostic", "status": "completed", "blockedBy": [18]},
    {"id": 20, "planTask": 15, "subject": "Task 15: MxGatewayEndpointEditor.razor", "status": "completed", "blockedBy": [8]},
    {"id": 21, "planTask": 16, "subject": "Task 16: Protocol selector in DataConnectionForm", "status": "completed", "blockedBy": [8, 20, 19]},
    {"id": 22, "planTask": 17, "subject": "Task 17: Verify MxGateway tag picker on Configure Instance", "status": "completed", "blockedBy": [19]},
    {"id": 23, "planTask": 18, "subject": "Task 18: Documentation", "status": "completed", "blockedBy": [17]},
    {"id": 24, "planTask": 19, "subject": "Task 19: Full build, test suite, deploy smoke", "status": "completed", "blockedBy": [17, 21, 22, 23]}
  ],
  "lastUpdated": "2026-05-28 (all tasks complete)"
}
