{
  "planPath": "docs/plans/2026-06-26-otopcua-fixedtree-equipment-injection.md",
  "tasks": [
    {"id": 1, "subject": "Task 1: DiscoveredNode DTO + CapturingAddressSpaceBuilder", "status": "completed"},
    {"id": 2, "subject": "Task 2: DiscoveredNodeMapper + materialize DTOs", "status": "completed", "blockedBy": [1]},
    {"id": 3, "subject": "Task 3: NodeManager RaiseNodesAddedModelChange", "status": "completed"},
    {"id": 4, "subject": "Task 4: AddressSpaceApplier.MaterialiseDiscoveredNodes", "status": "completed", "blockedBy": [2, 3]},
    {"id": 5, "subject": "Task 5: OpcUaPublishActor.MaterialiseDiscoveredNodes message+handler", "status": "completed", "blockedBy": [4]},
    {"id": 6, "subject": "Task 6: DriverInstanceActor post-connect bounded re-discovery", "status": "completed", "blockedBy": [1]},
    {"id": 7, "subject": "Task 7: DriverHostActor inject discovered nodes", "status": "completed", "blockedBy": [2, 5, 6]},
    {"id": 8, "subject": "Task 8: DriverHostActor re-inject after rebuild", "status": "completed", "blockedBy": [7]},
    {"id": 9, "subject": "Task 9: End-to-end discovered-node injection test", "status": "completed", "blockedBy": [7, 8]},
    {"id": 10, "subject": "Task 10: Build + full suite + docker-dev smoke", "status": "completed", "blockedBy": [9]},
    {"id": 11, "subject": "Task 11: Docs", "status": "completed", "blockedBy": [10]}
  ],
  "nativeTaskIds": {
    "1": 21, "2": 22, "3": 23, "4": 24, "5": 25, "6": 26,
    "7": 27, "8": 28, "9": 29, "10": 30, "11": 31
  },
  "lastUpdated": "2026-06-26T00:00:00Z",
  "status": "offline-complete; live wonder validation pending",
  "branch": "feat/focas-fixedtree-equipment-injection"
}
