docs(deferment): register fifth round — #559 closed (MQTT framing aligned with the fleet; backstop re-pinned as count relation); drift arc complete, no residual
This commit is contained in:
@@ -1280,6 +1280,42 @@ drivers), 3 carried-open archreview findings led by 01/S-1 (`AddressSpaceApplier
|
||||
|
||||
---
|
||||
|
||||
### 2026-08-10 (fifth round) — #559 closed: MQTT joins the fleet's framing contract; the drift arc ends
|
||||
|
||||
The fourth round's sole residual, one isolated-worktree Opus agent, fix `621a9e5d` merged to master.
|
||||
Verification on the merged tree: clean build; 4 affected suites / 2,790 tests green (Mqtt 708,
|
||||
AdminUI 1466, ControlPlane 261, FOCAS 355).
|
||||
|
||||
- **#559 CLOSED** — both MQTT runtime mappers (`FromTagConfig`, `FromSparkplugTagConfig`) dropped
|
||||
their untrimmed `|| tagConfig[0] != '{'` clause; `JsonDocument.Parse` + the root-`ValueKind`
|
||||
check are the single framing authority, as in the six sibling drivers. The verdict changes ONLY
|
||||
for whitespace-padded JSON objects (now earning their content's verdict); bare names, arrays,
|
||||
numbers, strings and blanks are refused by the same mechanisms as before, and a caller sweep
|
||||
confirmed nothing relied on the first byte (no name-vs-blob fallback exists in v3). `Inspect`
|
||||
needed **no logic change** — since #556 it trims its own pre-filter and hands the RAW blob to
|
||||
the mappers — but four comment sites claiming the padded-blob refusal was real were rewritten.
|
||||
- **The #556 backstop lost its only vehicle, by design.** The padded blob was the one
|
||||
production-reachable shape for "refused, but no DescribeRejection branch can name why"; after
|
||||
the fix no vehicle exists (a union refusal with a topic requires a named strict-field failure;
|
||||
without topic and without the Sparkplug tuple the no-address branch fires). The backstop stays
|
||||
as defence-in-depth, re-pinned **FOCAS-style as a count relation**
|
||||
(`A_rejected_config_always_draws_more_than_its_advisories_alone`), and the old flipped test was
|
||||
replaced by the stronger parity form `Leading_whitespace_changes_neither_the_verdict_nor_the_inspection`
|
||||
over the accepted AND rejected corpus with an anti-vacuity control proving the corpus carries
|
||||
both verdicts. New runtime tests assert padded-vs-unpadded **definition equality**, not just the
|
||||
accept bool. Falsification: each mapper sabotaged separately — exactly 5 (Plain) / 4 (Sparkplug)
|
||||
tests reddened, all specific to the sabotaged mapper, nothing unrelated.
|
||||
- **Honest coverage note:** the three padded entries added to the AdminUI parity corpus stayed
|
||||
green under BOTH sabotages — `MqttTagConfigModel` consults the same union parse via
|
||||
`TagConfigParseGate`, so authoring moves with runtime by construction. They pin a future
|
||||
*divergence* (unwiring the parse-gate consult), not this defect; the load-bearing coverage is
|
||||
driver-side. A parity test cannot detect a defect both sides share.
|
||||
|
||||
**No residual filed.** The authoring-vs-deploy-gate drift arc (#549 → #550/#551 → #552/#553 →
|
||||
#554/#555 → #556/#557/#558 → #559) is closed end to end.
|
||||
|
||||
---
|
||||
|
||||
### 2026-08-10 (fourth round) — #556 + #557 + #558 closed: Inspect trims and classifies; the last alias and the last hand-list fall
|
||||
|
||||
The three residuals of the #554/#555 round, three isolated-worktree Opus agents, merged `7482cf0c`
|
||||
|
||||
Reference in New Issue
Block a user