diff --git a/docs/plans/2026-06-18-hosts-rows-abcip-nested-hygiene.md.tasks.json b/docs/plans/2026-06-18-hosts-rows-abcip-nested-hygiene.md.tasks.json index a3ec684b..2f89737e 100644 --- a/docs/plans/2026-06-18-hosts-rows-abcip-nested-hygiene.md.tasks.json +++ b/docs/plans/2026-06-18-hosts-rows-abcip-nested-hygiene.md.tasks.json @@ -4,14 +4,19 @@ "branch": "feat/hosts-rows-abcip-nested-hygiene", "baseSha": "f59680fa", "designCommit": "fec08915", - "executionState": "IN_PROGRESS", + "executionState": "COMPLETE", "tasks": [ - {"id": 1, "subject": "Task 1: AbCip nested-struct template-id threading (decoder + record + driver + tests)", "classification": "standard", "status": "pending"}, - {"id": 2, "subject": "Task 2: /hosts store GetAll() + pure HostsDriverView grouping builder + tests", "classification": "standard", "status": "pending"}, - {"id": 3, "subject": "Task 3: /hosts cluster-grouped Driver Instances Razor section", "classification": "standard", "status": "pending", "blockedBy": [2]}, - {"id": 4, "subject": "Task 4: Galaxy stale-comment hygiene (PR-4.W / legacy-host forward-refs)", "classification": "trivial", "status": "pending"}, - {"id": 5, "subject": "Task 5: Reconcile stillpending #10/#6/#8 + memory", "classification": "trivial", "status": "pending"}, - {"id": 6, "subject": "Task 6: Build + AbCip/AdminUI/Galaxy tests + Component A live /run + finish (merge+push)", "classification": "small", "status": "pending"} + {"id": 1, "subject": "Task 1: AbCip nested-struct template-id threading (decoder + record + driver + tests)", "classification": "standard", "status": "completed", "commits": ["3d8ce4e8", "d203f31c (review fixes)"], "reviews": "spec ✅ COMPLIANT; code ✅ APPROVED pending 1 doc fix -> applied (stale ResolveDiscoveredUdtShapeAsync param doc + scalar-only typeCode note). AbCip 301/301."}, + {"id": 2, "subject": "Task 2: /hosts store GetAll() + pure HostsDriverView grouping builder + tests", "classification": "standard", "status": "completed", "commits": ["cb062fce"], "reviews": "spec ✅ COMPLIANT; code ✅ APPROVED (no issues). 9 new tests; AdminUI 495/495; Commons record untouched."}, + {"id": 3, "subject": "Task 3: /hosts cluster-grouped Driver Instances Razor section", "classification": "standard", "status": "completed", "commits": ["6457eba8", "07bd63f8 (review fixes)"], "reviews": "spec ✅ COMPLIANT; code ✅ APPROVED with 2 Important parity items -> applied (async-timer-lambda task discard hardening; IDisposable->IAsyncDisposable + await _timer.DisposeAsync(), mirroring DriverStatusPanel). Members section byte-identical."}, + {"id": 4, "subject": "Task 4: Galaxy stale-comment hygiene (PR-4.W / legacy-host forward-refs)", "classification": "trivial", "status": "completed", "commits": ["9cf88e33"], "note": "5 sites rewritten to shipped reality, each claim re-verified vs live code; comment-only confirmed (no non-comment +/- lines)."}, + {"id": 5, "subject": "Task 5: Reconcile stillpending #10/#6/#8/#13 + memory", "classification": "trivial", "status": "completed", "note": "stillpending.md (never-staged) items #6/#8/#10/#13 struck SHIPPED; MEMORY.md + project_stillpending_backlog.md updated (net-shorter, MEMORY.md 25756->25523 B)."}, + {"id": 6, "subject": "Task 6: Build + AbCip/AdminUI/Galaxy tests + Component A live /run + finish (merge+push)", "classification": "small", "status": "completed", "liveRun": "Solution build clean (0 errors). AbCip 301/301, AdminUI 495/495, Galaxy 294/298 (4 live-gw skips). LIVE /run PASS: rebuilt BOTH central nodes (:9200 round-robin), /hosts Driver Instances section shows MAIN cluster Galaxy(GalaxyMxGateway)/Modbus/OpcUaClient all HEALTHY with name+type enrichment, cluster-grouped, node chips; SITE-A/SITE-B show nodes + 'No drivers'; Members section unchanged."} + ], + "reviewFollowUps": [ + "AbCip nested-struct: live-verify is infra-gated (no nested-UDT ControlLogix rig); decode + no-seam threading test pin the real risk. The load-bearing assumption (struct-member low-12 = template id) is asserted by the decoder's own remarks + pinned by the test.", + "Hosts: TRUE per-Akka-member driver-health fidelity (vs cluster-scoped) is DEFERRED — needs a hosting-node field on the Commons DriverHealthChanged message (forbidden change) or a per-node DriverHostActor-children Ask.", + "Hosts: a brand-new driver deployed after page load shows by DriverInstanceId until the next 5s config reload (cosmetic; the unknown-driver fallback handles it gracefully)." ], "lastUpdated": "2026-06-18" }