fix(runtime): virtual tags hold on Bad inputs and inherit the worst input status (archreview 02/S14)
This commit is contained in:
@@ -780,3 +780,29 @@ test could only pass once the production change landed.
|
||||
overload. A test pins that fallback explicitly (`ValueOnlyEvaluator`).
|
||||
- `RoslynVirtualTagEvaluator.BuildReadCache` is **deleted**; the snapshots are the read cache. The
|
||||
value-only overload now projects up into the snapshot one, so there is a single evaluation body.
|
||||
|
||||
### T16 — `VirtualTagActor` honours input quality
|
||||
|
||||
- RED: `--filter "…VirtualTagActorInputQualityTests"` ⇒ **7 failed**, incl. `bad.StatusCode should be
|
||||
2150694912u`, `result.StatusCode should be 1073741824u` (Uncertain), `reassert.StatusCode should be
|
||||
2150694912u`, and `Expected no messages … instead we received EvaluationResult { … StatusCode = 0 }`
|
||||
for the cold-start case — i.e. a Bad input produced a fresh Good result.
|
||||
- GREEN: 58 passed across `VirtualTag*` (the 7 new + the R2-03 transition suites + the host bridge's
|
||||
new historize-parity case), all pre-existing cases unchanged.
|
||||
- **Vacuity check performed** (the plan requires this one explicitly): reverting the dedup key to
|
||||
value-only ⇒ `An_identical_value_is_republished_when_recovering_from_a_bad_input` **FAILED** with
|
||||
`Timeout 00:00:15 while waiting for a message of type …EvaluationResult` — the recovery was swallowed
|
||||
entirely. Restored, green.
|
||||
- ⚠️ **Deviation from the plan's design, deliberate and load-bearing.** The plan says the worst-of-input
|
||||
walk should treat a **never-pushed** dependency as `BadWaitingForInitialData` and hold. Implemented
|
||||
literally, that HOLDS evaluation during ordinary warm-up — but this actor (unlike the Calculation
|
||||
driver) has always evaluated on partial arrival and published the partial result, and two existing
|
||||
tests assert exactly that (`VirtualTagActorTests.Evaluator_result_flows_to_parent_as_EvaluationResult`
|
||||
and `DependencyMuxActorTests.VirtualTagActor_PreStart_registers_deps_…_end_to_end`, which both went red
|
||||
under the literal reading). The worst-of walk therefore covers **arrived** deps only — the same skip
|
||||
`ScriptedAlarmEngine.WorstInputStatus` has always made — and cold start stays governed by R2-03's
|
||||
existing `AllDependenciesArrived` gate on the publish tails. The plan's own risk note ("every Good-path
|
||||
assertion in the existing suites stays byte-identical") is what this preserves.
|
||||
- `_lastPublishedBad` became `_hasPublished` + `_lastPublishedStatus`, which is also what makes
|
||||
`ReassertValue` re-emit `BadNoCommunication` after a deploy instead of guessing Good.
|
||||
- Docs: `docs/ScriptEditor.md` §"Input quality: what a script sees, and when it runs at all".
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
{
|
||||
"id": "T16",
|
||||
"subject": "VirtualTagActor honours input quality: snapshot map, hold on Bad, worst-of status, (value,status) dedup key, reassert carries status; host-bridge historize parity test",
|
||||
"status": "pending",
|
||||
"status": "done",
|
||||
"blockedBy": [
|
||||
"T1",
|
||||
"T15"
|
||||
|
||||
Reference in New Issue
Block a user