feat(runtime): EvaluationResult carries OpcUaQuality; VT bridge publishes it + historizes BadInternalError on Bad (02/S13)

This commit is contained in:
Joseph Doherty
2026-07-13 09:51:15 -04:00
parent b977548593
commit c5ca3e8587
4 changed files with 91 additions and 14 deletions
@@ -10,26 +10,34 @@
{
"id": "R2-03-T2",
"subject": "Add OpcUaQuality Quality (default Good) to VirtualTagActor.EvaluationResult; bridge passes result.Quality into AttributeValueUpdate; historize maps Bad to 0x80020000u BadInternalError (RED bridge tests then GREEN)",
"status": "pending",
"blockedBy": ["R2-03-T1"]
"status": "completed",
"blockedBy": [
"R2-03-T1"
]
},
{
"id": "R2-03-T3",
"subject": "VirtualTagActor failure/throw publishes Bad EvaluationResult once per transition, gated on all dependencyRefs arrived; recovery bypasses value-dedup; update Evaluator_failure_publishes_ScriptLogEntry_warning expectation (turns T1 green)",
"status": "pending",
"blockedBy": ["R2-03-T2"]
"blockedBy": [
"R2-03-T2"
]
},
{
"id": "R2-03-T4",
"subject": "S13 transition-semantics unit guards: second consecutive failure publishes nothing; same-value recovery republishes Good; evaluator-threw path also degrades",
"status": "pending",
"blockedBy": ["R2-03-T3"]
"blockedBy": [
"R2-03-T3"
]
},
{
"id": "R2-03-T5",
"subject": "S13 cold-start suppression guards: missing-dep failure publishes no Bad; failure after all deps arrived publishes Bad (inputs-ready gate)",
"status": "pending",
"blockedBy": ["R2-03-T3"]
"blockedBy": [
"R2-03-T3"
]
},
{
"id": "R2-03-T6",
@@ -47,31 +55,45 @@
"id": "R2-03-T8",
"subject": "S12 fix: retry-once on ObjectDisposedException in RoslynVirtualTagEvaluator.Evaluate (re-fetch via GetOrCompile; no retry when _disposed or second hit); update xmldoc (turns T7 green)",
"status": "pending",
"blockedBy": ["R2-03-T6", "R2-03-T7"]
"blockedBy": [
"R2-03-T6",
"R2-03-T7"
]
},
{
"id": "R2-03-T9",
"subject": "P7 wiring-guard rewrite (RED): ApplyVirtualTags clears the compile cache only when the expression set changes — identical redeploy must NOT clear; expression edit must; shared-expression removal must not",
"status": "pending",
"blockedBy": ["R2-03-T3"]
"blockedBy": [
"R2-03-T3"
]
},
{
"id": "R2-03-T10",
"subject": "P7 fix: gate the OnApply ClearCompiledScripts on HashSet.SetEquals of desired vs _planByVtag expression sets (ordinal), with explanatory comment (turns T9 green)",
"status": "pending",
"blockedBy": ["R2-03-T9"]
"blockedBy": [
"R2-03-T9"
]
},
{
"id": "R2-03-T11",
"subject": "Full-suite sweep (Runtime.Tests whole project + RoslynVirtualTagEvaluatorTests + solution build) and STATUS.md / tasks.json bookkeeping",
"status": "pending",
"blockedBy": ["R2-03-T4", "R2-03-T5", "R2-03-T8", "R2-03-T10"]
"blockedBy": [
"R2-03-T4",
"R2-03-T5",
"R2-03-T8",
"R2-03-T10"
]
},
{
"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",
"blockedBy": ["R2-03-T11"]
"blockedBy": [
"R2-03-T11"
]
}
],
"lastUpdated": "2026-07-12"