178 lines
8.8 KiB
JSON
178 lines
8.8 KiB
JSON
{
|
|
"planPath": "docs/plans/2026-06-19-followups-batch.md",
|
|
"designPath": "docs/plans/2026-06-19-followups-batch-design.md",
|
|
"executionState": "COMPLETE",
|
|
"base": "master f57aa8fa",
|
|
"branchAtExecution": "feat/followups-batch",
|
|
"branchCreatedFrom": "master ad359c5c",
|
|
"outcome": {
|
|
"codeTasks": "T1-T6 all complete; 11 commits; full-solution build 0 errors; all touched suites green; per-task + final integration review READY TO MERGE",
|
|
"liveVerify": "T5 fully verified live (inline New script -> dropdown shows new script label). T4 substantially verified (picker opens, live gateway browse works, edited alarm+scale+isHistorized config commits); final Use-this-address pick-and-assert blocked by the Galaxy object browser's href=# name-links navigating away under browser automation (pre-existing picker quirk, unrelated to the SetFullName change; preservation covered by 6 unit tests).",
|
|
"findings": "T6 (B1) production already shipped bb59fd4e 2026-06-15 (like #400); delivered missing behavioural test coverage instead. Stray throwaway script SC-ff9c2a3a7044 'vtag-livecheck script' (blank, unbound) left in dev DB during T5 verify; Scripts page has no delete affordance.",
|
|
"reconsiderGates": "T7 BUILT+SHIPPED (FB-7, master 30c9821f). T8 NOT built (awaiting explicit go-ahead). T9/T10 DONE (FB-9/FB-10, live-verified). T11 PARTIAL: Phase B native-alarm pipeline PROVEN live 2026-06-19 (Galaxy! ConditionId-prefix finding); Phase C HistoryRead + H6 ack->AVEVA + AbLegacy/FOCAS/TwinCAT probes remain AVEVA/hardware/no-local-target deferred."
|
|
},
|
|
"tasks": [
|
|
{
|
|
"id": 1,
|
|
"ref": "A1",
|
|
"subject": "OpcUaClient history session-capture-before-gate race fix",
|
|
"classification": "standard",
|
|
"status": "completed",
|
|
"commits": [
|
|
"eb328e57",
|
|
"eede0c92"
|
|
],
|
|
"parallelizableWith": [
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6
|
|
],
|
|
"group": "A-actionable"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"ref": "A2",
|
|
"subject": "Client.CLI enable/disable command (H4 client path)",
|
|
"classification": "standard",
|
|
"status": "completed",
|
|
"commits": [
|
|
"88d5ba45",
|
|
"f81fa768"
|
|
],
|
|
"parallelizableWith": [
|
|
1,
|
|
3,
|
|
4,
|
|
5,
|
|
6
|
|
],
|
|
"group": "A-actionable"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"ref": "A3",
|
|
"subject": "Cert-audit minor review nits (unreachable fallthrough comment + single PkiStoreRoot read)",
|
|
"classification": "trivial",
|
|
"status": "completed",
|
|
"commits": [
|
|
"6223bc97"
|
|
],
|
|
"parallelizableWith": [
|
|
1,
|
|
2,
|
|
4,
|
|
5,
|
|
6
|
|
],
|
|
"group": "A-actionable"
|
|
},
|
|
{
|
|
"id": 4,
|
|
"ref": "B2",
|
|
"subject": "AdminUI: preserve edited alarm fields on Galaxy address re-pick",
|
|
"classification": "small",
|
|
"status": "completed",
|
|
"commits": [
|
|
"2dd723e1",
|
|
"e047af05"
|
|
],
|
|
"liveVerify": "substantial (picker+gateway-browse+config-commit confirmed; final pick-and-assert blocked by object-browser href quirk; preservation unit-tested)",
|
|
"parallelizableWith": [
|
|
1,
|
|
2,
|
|
3,
|
|
5,
|
|
6
|
|
],
|
|
"group": "B-deferred"
|
|
},
|
|
{
|
|
"id": 5,
|
|
"ref": "B3",
|
|
"subject": "AdminUI: refresh script dropdown label after inline create",
|
|
"classification": "small",
|
|
"status": "completed",
|
|
"commits": [
|
|
"da57c307",
|
|
"d8254630"
|
|
],
|
|
"liveVerify": "PASS (inline New script -> dropdown label = new script)",
|
|
"parallelizableWith": [
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
6
|
|
],
|
|
"group": "B-deferred"
|
|
},
|
|
{
|
|
"id": 6,
|
|
"ref": "B1",
|
|
"subject": "Write-outcome residuals: Bad-quality blip + AuditWriteUpdateEvent + sync fail-fast",
|
|
"classification": "standard",
|
|
"status": "completed",
|
|
"commits": [
|
|
"36eb14e8",
|
|
"85afb678"
|
|
],
|
|
"note": "production already shipped bb59fd4e 2026-06-15; delivered missing behavioural test coverage + private->internal seam",
|
|
"parallelizableWith": [
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"group": "B-deferred"
|
|
},
|
|
{
|
|
"id": 7,
|
|
"ref": "B4",
|
|
"subject": "F10b surgical DataType/IsArray in-place writes",
|
|
"classification": "standard",
|
|
"status": "pending",
|
|
"gate": "RECONSIDER \u2014 previously decided against (dirty); do NOT build without explicit go-ahead",
|
|
"group": "B-reconsider"
|
|
},
|
|
{
|
|
"id": 8,
|
|
"ref": "B5",
|
|
"subject": "Alarm-severity SetSeverity surgical update",
|
|
"classification": "small",
|
|
"status": "pending",
|
|
"gate": "RECONSIDER \u2014 operationally invisible (alarm engine overwrites); do NOT build without explicit go-ahead",
|
|
"group": "B-reconsider"
|
|
},
|
|
{
|
|
"id": 9,
|
|
"ref": "C1",
|
|
"subject": "Modbus-Int64 full live authoring on docker-dev",
|
|
"classification": "verify",
|
|
"status": "completed",
|
|
"note": "VERIFIED PASS 2026-08-10 on docker-dev (rig rebuilt to master 481f4343, image parity asserted across all 6 nodes). Authored Int64 raw tag TASK9-INT64 (RawPath pymodbus/plc/Task9Int64, TagConfig region=HoldingRegisters address=200 dataType=Int64 BigEndian) via ConfigDb + headless deploy API; deployment b4d7c8be sealed (Status=2). Node advertises DataType i=8 (Int64), ValueRank -1, Good, on BOTH :4840 and :4841; value 347340207162261544 is the exact BigEndian decode of HR200-203=(1234,20,30,40). Value-change propagation proven by driving HR203 via FC06 (observed via subscribe on both centrals; registers restored after). Fixture caveat: the standard profile has NO naturally-churning 4-register span (HR100 is isolated; spans over it return ILLEGAL DATA ADDRESS), so churn was externally driven. No product gap. Tag row left in place, deployed and serving, consistent with prior gate rows.",
|
|
"group": "C-verify"
|
|
},
|
|
{
|
|
"id": 10,
|
|
"ref": "C2",
|
|
"subject": "S7 + AbCip Test-Connect probe happy-path live-verify",
|
|
"classification": "verify",
|
|
"status": "completed",
|
|
"note": "VERIFIED PASS 2026-08-10: DriverProbeHandshakeE2eTests 12/12 passed, 0 skipped (S7_Green_AgainstSim, AbCip_Green_AgainstSim with 'CIP session OK' proving a real authored-tag read, AbCip_WithNoAuthoredTags_ReportsTheControllerReachable, plus Modbus/OpcUaClient/local-rig/Galaxy legs \u2014 mxaccessgw on 10.100.0.48 happened to be reachable). Correction to the task's premise: skip-gating is pure TCP reachability (DockerFixtureAvailability.IsReachable), NOT env vars, and the checked-in defaults already point at 10.100.0.35 \u2014 runnable from macOS directly; the 'needs Windows-VM fixtures' note was stale. S7 fixture started then removed (net zero); AbCip was already up (5 days) and left as found.",
|
|
"group": "C-verify"
|
|
},
|
|
{
|
|
"id": 11,
|
|
"ref": "C3",
|
|
"subject": "Device-gated proofs (H6 ack\u2192AVEVA, Phase C T7, Phase B T9, AbLegacy/TwinCAT/FOCAS probe)",
|
|
"classification": "blocked",
|
|
"status": "partial",
|
|
"note": "Live-assessed 2026-06-19 (gateway 10.100.0.48:5120 reachable from this Mac, so the 'all blocked' label was partly stale). OUTCOMES: (Phase B T9) DONE \u2014 native-alarm PIPELINE proven end-to-end live on docker-dev: authored a Galaxy alarm tag (FullName=Galaxy!TestArea.TestMachine_001.TestAlarm001, alarm{alarmType:OffNormalAlarm,severity:750}) -> Galaxy driver opened the native-alarm subscription (previously-gated path) -> gateway transition materialised Part 9 condition GalaxyNativeAlarm (ns=2;s=EQ-55297329838d/GalaxyNativeAlarm) carrying the EXACT gateway raise time 2026-05-24T16:04:10.856Z, surfaced via ConditionRefresh. KEY FINDING: ConditionId match REQUIRES the 'Galaxy!' source prefix on the authored FullName (without it every transition is silently dropped). Severity 700 = MapSeverity(750) (MediumHigh bucket), not a bug. Net state Inactive/Unacked because the gateway replays weeks-old historical raises -> a fresh Active-state + live /alerts row needs an alarm triggered on the AVEVA side. (Phase C T7) DEFERRED config+data-gated \u2014 confirmed the historized Galaxy node materialises + server HistoryRead path returns GoodNoData/0-values with ServerHistorian.Enabled=false (correct NullHistorianDataSource degrade); live data needs enabling ServerHistorian + Wonderware sidecar on 10.100.0.48 + actual stored history (synthetic ref has none). (H6 ack->AVEVA) DEFERRED \u2014 ack SEND reachable but Galaxy AckMsg is write-only/fire-and-forget; confirming it LANDED needs AVEVA-side observation on 10.100.0.48. (AbLegacy/FOCAS/TwinCAT probe) DEFERRED \u2014 no local sims running + no live-target probe harness; TwinCAT(ADS) genuinely has no rig target. Rig restored (alarm tag removed, Galaxy back to value-only).",
|
|
"group": "C-blocked"
|
|
}
|
|
],
|
|
"lastUpdated": "2026-06-19"
|
|
} |