Files
ScadaBridge/archreview/plans/PLAN-05-templates-deployment-transport.md.tasks.json
T

32 lines
5.9 KiB
JSON

{
"planPath": "archreview/plans/PLAN-05-templates-deployment-transport.md",
"tasks": [
{ "id": 1, "subject": "Task 1: Wire template inheritance edges in the import apply path", "status": "completed", "blockedBy": [] },
{ "id": 2, "subject": "Task 2: Import-time acyclicity check over the merged template graph", "status": "completed", "blockedBy": [1] },
{ "id": 3, "subject": "Task 3: Carry MinTimeBetweenRuns/ExecutionTimeoutSeconds through import", "status": "completed", "blockedBy": [2] },
{ "id": 4, "subject": "Task 4: Add LockedInDerived to template child DTOs and apply paths", "status": "completed", "blockedBy": [3] },
{ "id": 5, "subject": "Task 5: Transport template NativeAlarmSources end-to-end", "status": "completed", "blockedBy": [4] },
{ "id": 6, "subject": "Task 6: Single-source per-entity field comparers for diff + sync", "status": "pending", "blockedBy": [5] },
{ "id": 7, "subject": "Task 7: Export real AreaName (finish half-shipped Area transport)", "status": "completed", "blockedBy": [] },
{ "id": 8, "subject": "Task 8: Round-trip export→import equivalence test suite", "status": "pending", "blockedBy": [5, 6, 7] },
{ "id": 9, "subject": "Task 9: Fix repeated-composition member loss in FlatteningService", "status": "completed", "blockedBy": [] },
{ "id": 10, "subject": "Task 10: Fix CollisionDetector blindness under repeated composition", "status": "completed", "blockedBy": [9] },
{ "id": 11, "subject": "Task 11: Add NativeAlarmSources to RevisionHashService (planned hash migration)", "status": "completed", "blockedBy": [13] },
{ "id": 12, "subject": "Task 12: Add NativeAlarmSources to DiffService", "status": "completed", "blockedBy": [13] },
{ "id": 13, "subject": "Task 13: Enforce locks on native alarm source overrides", "status": "completed", "blockedBy": [] },
{ "id": 14, "subject": "Task 14: Script-artifact invalidation contract — Commons seam + Transport publisher (plan-06 handoff)", "status": "pending", "blockedBy": [] },
{ "id": 15, "subject": "Task 15: Cache script compile verdicts by code hash", "status": "completed", "blockedBy": [] },
{ "id": 16, "subject": "Task 16: Skip script compilation on read-only staleness/comparison paths", "status": "completed", "blockedBy": [] },
{ "id": 17, "subject": "Task 17: Isolate the post-success deployment audit write", "status": "completed", "blockedBy": [16] },
{ "id": 18, "subject": "Task 18: Delete NotDeployed instances without a site round-trip", "status": "completed", "blockedBy": [17] },
{ "id": 19, "subject": "Task 19: Import blocker heuristic — local-declaration exclusion, denylist additions, warning severity", "status": "pending", "blockedBy": [6] },
{ "id": 20, "subject": "Task 20: Run the script trust gate on bundle import", "status": "pending", "blockedBy": [19] },
{ "id": 21, "subject": "Task 21: Harden the ScriptTrustPolicy deny-list", "status": "completed", "blockedBy": [] },
{ "id": 22, "subject": "Task 22: Bound LineDiffer input size", "status": "completed", "blockedBy": [] },
{ "id": 23, "subject": "Task 23: Fix ArtifactDiff placeholder-identity comparisons", "status": "pending", "blockedBy": [20] },
{ "id": 24, "subject": "Task 24: Low-severity cleanup batch (session cap, full error lists, semantic-validator warning)", "status": "pending", "blockedBy": [15, 19] },
{ "id": 25, "subject": "Task 25: Design-doc + CLAUDE.md sync sweep and deferred-decision ledger", "status": "pending", "blockedBy": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24] }
],
"lastUpdated": "2026-07-09 (Wave 5 COMPLETE: T5 done — 17/25. T5 (transport template NativeAlarmSources end-to-end) in-plan-worktree, high-risk: new TemplateNativeAlarmSourceDto + init-only TemplateDto.NativeAlarmSources (empty default, additive) + export/FromBundleContent/BuildTemplate wiring + new SyncTemplateNativeAlarmSourcesAsync Overwrite child-sync + ArtifactDiff.CompareTemplate DiffChildren. Proven by end-to-end flatten test (instance native-alarm-source override that dangled pre-fix now resolves). Code-reviewed (code-reviewer subagent: no substantive defects; folded 2 test-coverage gaps — no-change zero-audit + IsInherited/LockedInDerived fidelity — into a follow-up test commit). Commits: e4136cb9 T5 + 7b6d6bb8 test-hardening. Combined build 0/0; Transport 131 unit / 74 integ. HEAD 7b6d6bb8 (pre-tasks-sync). Ready set now: {6 (single-source TemplateChildEquality — BundleImporter+ArtifactDiff, in-worktree serial after T5✓), 14 (Commons+Host+BundleImporter publish hook)}. Chain remaining: T6→T19→T20→T23 all in-worktree serial via BundleImporter/ArtifactDiff; T8 (round-trip reflection suite, test-only) unblocks after T6 (5,7 already done). T24 needs T19. T25 docs last.) PREV: (Wave 4 COMPLETE: T4, T11, T12 done — 16/25. T4 (LockedInDerived on template child DTOs: EntityDtos+EntitySerializer+BundleImporter, additive trailing bool) done in-plan-worktree (opens the serial BundleImporter chain, high-risk); T11 (RevisionHashService NativeAlarmSources, null-when-empty surgical hash, pinned baseline) + T12 (DiffService+ConfigurationDiff NativeAlarmSources, generic DiffEntry<T>) via off-main isolated agents — BOTH had to cherry-pick T13 (57f7f657) into their off-main base first since ResolvedNativeAlarmSource.IsLocked is absent on main; grafted their fix commits (0cd01772→0302694f, cbc70c4d→d8332199) onto the plan branch which already has T13. Combined build 0/0 + suites green: Transport 130 unit/69 integ, TemplateEngine 463, DeploymentManager 112. HEAD d8332199. Ready set now: {5 (BundleImporter chain, in-worktree serial after T4✓), 14 (Commons+Host+BundleImporter publish hook — serialize w/ T5 chain), 24 (blockedBy 15✓,19-pending → still blocked)}. Chain remaining: T5→T6→T19→T20→T23 all in-plan-worktree serial through BundleImporter.cs; T8 (round-trip test suite) after 5,6,7✓. T14 also edits BundleImporter → serialize with the chain, NOT parallel.)"
}