{ "planPath": "archreview/plans/R2-03-vt-failure-quality-plan.md", "tasks": [ { "id": "R2-03-T1", "subject": "S13 stale-Good repro test at host level (RED — must fail on f6eaa267): fail-after-success evaluator, publish probe sees Good then expects Bad AttributeValueUpdate", "status": "pending", "blockedBy": [] }, { "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"] }, { "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"] }, { "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"] }, { "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"] }, { "id": "R2-03-T6", "subject": "S12 sequential pin: Evaluate_after_ClearCompiledScripts_recompiles_and_succeeds (green baseline the T8 retry-loop restructure must not regress)", "status": "pending", "blockedBy": [] }, { "id": "R2-03-T7", "subject": "S12 concurrent stress repro (RED): 300 compiled evaluations racing ClearCompiledScripts, WaitAsync-bounded, assert zero disposed-reason failures", "status": "pending", "blockedBy": [] }, { "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"] }, { "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"] }, { "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"] }, { "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"] }, { "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"] } ], "lastUpdated": "2026-07-12" }