{ "planPath": "docs/plans/2026-05-24-transport.md", "tasks": [ {"id": 7, "subject": "T0: Bundle DTOs in Commons", "status": "pending"}, {"id": 8, "subject": "T1: Transport interfaces", "status": "pending"}, {"id": 9, "subject": "T2: BundleImportId column on AuditLogEntry", "status": "pending"}, {"id": 10, "subject": "T3: EF migration AddBundleImportIdToAuditLog", "status": "pending", "blockedBy": [9]}, {"id": 11, "subject": "T4: IAuditCorrelationContext scoped service", "status": "pending"}, {"id": 12, "subject": "T5: AuditService reads correlation context", "status": "pending", "blockedBy": [9, 11]}, {"id": 13, "subject": "T6: ScadaLink.Transport project skeleton", "status": "pending"}, {"id": 14, "subject": "T7: TransportOptions", "status": "pending", "blockedBy": [13]}, {"id": 15, "subject": "T8: BundleSecretEncryptor (AES-256-GCM + PBKDF2)", "status": "pending", "blockedBy": [13]}, {"id": 16, "subject": "T9: ManifestBuilder + ManifestValidator", "status": "pending", "blockedBy": [13]}, {"id": 17, "subject": "T10: EntitySerializer + DTOs + secret carving", "status": "pending", "blockedBy": [13]}, {"id": 18, "subject": "T11: BundleSerializer (ZIP packer + reader)", "status": "pending", "blockedBy": [15, 16, 17]}, {"id": 19, "subject": "T12: DependencyResolver", "status": "pending", "blockedBy": [13]}, {"id": 20, "subject": "T13: BundleSessionStore", "status": "pending", "blockedBy": [13]}, {"id": 21, "subject": "T14: BundleExporter.ExportAsync", "status": "pending", "blockedBy": [18, 19]}, {"id": 22, "subject": "T15: BundleImporter.LoadAsync", "status": "pending", "blockedBy": [18, 20]}, {"id": 23, "subject": "T16: BundleImporter.PreviewAsync (diff engine)", "status": "pending", "blockedBy": [22]}, {"id": 24, "subject": "T17: BundleImporter.ApplyAsync (transactional)", "status": "pending", "blockedBy": [12, 23]}, {"id": 25, "subject": "T18: Host registration + appsettings binding", "status": "pending", "blockedBy": [24]}, {"id": 26, "subject": "T19: TreeView checkbox-selection mode", "status": "pending"}, {"id": 27, "subject": "T20: TemplateFolderTree wrapper + Templates.razor refactor", "status": "pending", "blockedBy": [26]}, {"id": 28, "subject": "T21: TransportExport.razor wizard", "status": "pending", "blockedBy": [21, 27]}, {"id": 29, "subject": "T22: TransportImport.razor wizard", "status": "pending", "blockedBy": [24, 27]}, {"id": 30, "subject": "T23: NavMenu Export/Import entries", "status": "pending", "blockedBy": [28, 29]}, {"id": 31, "subject": "T24: Audit log Bundle Import filter", "status": "pending", "blockedBy": [9]}, {"id": 32, "subject": "T25: Integration round-trip test", "status": "pending", "blockedBy": [24]}, {"id": 33, "subject": "T26: Integration conflict + rollback tests", "status": "pending", "blockedBy": [24]}, {"id": 34, "subject": "T27: Component-Transport.md design doc", "status": "pending"}, {"id": 35, "subject": "T28: README + cross-reference updates", "status": "pending"}, {"id": 36, "subject": "T29: Manual cluster verification checklist", "status": "pending", "blockedBy": [25, 29, 30, 31, 32, 33, 34, 35]} ], "lastUpdated": "2026-05-24T00:00:00Z" }