docs(archreview): record R2-03 (02/S13+S12+P7) fixed on branch; full VT suites green

This commit is contained in:
Joseph Doherty
2026-07-13 10:18:10 -04:00
parent a916ae6ebe
commit 534e03bc74
2 changed files with 29 additions and 5 deletions
@@ -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"
}
+22
View File
@@ -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, ~1824 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).