feat(core): InputQuality.WorstOf — the one worst-of-input rule (archreview R3-02 contract)

This commit is contained in:
Joseph Doherty
2026-08-20 09:38:16 -04:00
parent 72329eabdd
commit faea4ebfca
5 changed files with 202 additions and 19 deletions
@@ -580,3 +580,23 @@ T17 anytime; T18 after all; T19 last
```
Overall effort: **~2 dev-days code+unit, plus the rig session**. The three HIGH-RISK data-plane slices (T3 MQTT stale, T8 value-node Bad, T13/T16 hold-on-Bad) each land behind their full suites; the two recovery contract tests (T10, T16's identical-value case) must each be seen to FAIL once against a reverted dedup before merge — that is the whole reason this family re-appeared.
---
## Execution notes
Branch `fix/r3-02-stale-good-family` (worktree `.claude/worktrees/agent-a696a39981023fa0b`), off master
`72329eab`. Executed in plan block order T1, B (T2–T5), C (T6–T10), D (T12–T14), E (T15–T16), T17, T18.
**T11 and T19 are deliberately NOT in this branch** — T11 waits for the sibling R3-03 branch to merge
(it is the only edit that would touch `DriverInstanceActor` lifecycle alongside R3-03's restart work),
and T19 is the operator rig gate.
Red-before observations are recorded per task below: what was run, and the failure text that proves the
test could only pass once the production change landed.
### T1 — `InputQuality.WorstOf`
- RED: `dotnet test tests/Core/…Core.Abstractions.Tests --filter "FullyQualifiedName~InputQualityTests"`
⇒ **build failure**, 8 × `error CS0103: The name 'InputQuality' does not exist in the current context`.
- GREEN: 13 passed. `Core.ScriptedAlarms.Tests` 94/94 green with `WorstInputStatus` re-pointed (the
never-pushed/null skips stay in the alarm engine — they are alarm policy, not the shared rule).
@@ -5,7 +5,7 @@
{
"id": "T1",
"subject": "InputQuality.WorstOf shared helper (Core.Abstractions) + truth-table tests; re-point ScriptedAlarmEngine.WorstInputStatus",
"status": "pending",
"status": "done",
"blockedBy": []
},
{