From 534e03bc746422496d3eca59b53465ca0a5dc187 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Mon, 13 Jul 2026 10:18:10 -0400 Subject: [PATCH] docs(archreview): record R2-03 (02/S13+S12+P7) fixed on branch; full VT suites green --- ...2-03-vt-failure-quality-plan.md.tasks.json | 12 +++++----- archreview/plans/STATUS.md | 22 +++++++++++++++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/archreview/plans/R2-03-vt-failure-quality-plan.md.tasks.json b/archreview/plans/R2-03-vt-failure-quality-plan.md.tasks.json index c866f268..2c55fffb 100644 --- a/archreview/plans/R2-03-vt-failure-quality-plan.md.tasks.json +++ b/archreview/plans/R2-03-vt-failure-quality-plan.md.tasks.json @@ -79,22 +79,24 @@ { "id": "R2-03-T11", "subject": "Full-suite sweep (Runtime.Tests whole project + RoslynVirtualTagEvaluatorTests + solution build) and STATUS.md / tasks.json bookkeeping", - "status": "pending", + "status": "deferred-live", "blockedBy": [ "R2-03-T4", "R2-03-T5", "R2-03-T8", "R2-03-T10" - ] + ], + "note": "integration/full sweep; serialized heavy pass (build clean, Runtime.Tests 372/372, RoslynVirtualTagEvaluatorTests 20/20 verified locally; whole-solution/cross-suite sweep deferred per controller memory constraint)" }, { "id": "R2-03-T12", "subject": "Live-/run gate on docker-dev (rebuild BOTH centrals): author working VT, break it, Client.CLI read shows StatusCode Bad with last value, fix and read Good; P7 no-recompile spot-check on identical redeploy", - "status": "pending", + "status": "deferred-live", "blockedBy": [ "R2-03-T11" - ] + ], + "note": "docker-dev live-/run; serial live pass" } ], - "lastUpdated": "2026-07-12" + "lastUpdated": "2026-07-13" } diff --git a/archreview/plans/STATUS.md b/archreview/plans/STATUS.md index 0271f9e9..416fec43 100644 --- a/archreview/plans/STATUS.md +++ b/archreview/plans/STATUS.md @@ -150,3 +150,25 @@ surface), 03/S2/S3 block-bridging, 03/P1 surgical adds (guard prerequisite in pl per-plan task counts, effort, and suggested execution order: [`00-INDEX.md`](00-INDEX.md) §"Round 2 plans". 193 bite-sized TDD tasks total, ~18–24 dev-days end-to-end; R2-01/02/03 (the re-review's new-and-sharp items) are ~2 days combined. + +### Round-2 remediation status + +- **R2-03 (02/S13 + 02/S12 + 02/P7) — FIXED ON BRANCH `r2/03-vt-failure-quality`** (off master + `1676c8f4`). All three findings closed with TDD: + - **02/S13** (Medium) — VT script failure/timeout now degrades the OPC UA node to `OpcUaQuality.Bad` + (carrying the last-known value) instead of freezing on the last Good value forever. `EvaluationResult` + gained an additive `Quality` field; the host bridge publishes it and historizes `0x80020000u` + (BadInternalError, dormant-engine parity) on Bad. Bad is published once per Good→Bad transition, gated + on all declared dependencies having arrived (inputs-ready gate — no cold-start/respawn Bad flash), and + recovery force-publishes the next Good even at the pre-failure value. + - **02/S12** (Medium) — the apply-boundary `ClearCompiledScripts` racing an in-flight evaluation into + `ObjectDisposedException` is now retried once in `RoslynVirtualTagEvaluator` (re-fetch → recompile into + the current cache generation). A concurrent-clear stress guard reproduces the pre-fix disposed failures + and is deterministically green post-fix. + - **02/P7** (Low) — the apply-boundary clear is gated on a changed deployed *expression set* + (`HashSet.SetEquals`, ordinal), so a byte-identical redeploy — or a rename/add/remove that leaves the + expression set unchanged — no longer forces full VT recompilation. + - Verified locally: `dotnet build ZB.MOM.WW.OtOpcUa.slnx` clean (0 errors); whole `Runtime.Tests` + project 372/372 green; `RoslynVirtualTagEvaluatorTests` 20/20 green. **Deferred to the serialized + heavy pass:** the full cross-suite sweep and the docker-dev live-`/run` gate (fail→Bad→recover + + P7 no-recompile spot-check).