{
  "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": "completed",
      "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": "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": "completed",
      "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": "completed",
      "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": "completed",
      "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": "completed",
      "blockedBy": []
    },
    {
      "id": "R2-03-T7",
      "subject": "S12 concurrent stress repro (RED): 300 compiled evaluations racing ClearCompiledScripts, WaitAsync-bounded, assert zero disposed-reason failures",
      "status": "completed",
      "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": "completed",
      "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": "completed",
      "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": "completed",
      "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": "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": "deferred-live",
      "blockedBy": [
        "R2-03-T11"
      ],
      "note": "docker-dev live-/run; serial live pass"
    }
  ],
  "lastUpdated": "2026-07-13"
}
