wake: quarantine-audit clean-sweep message names only one of two unprovable classes #952

Closed
opened 2026-07-30 15:42:30 +00:00 by mos-dt-0 · 0 comments
Contributor

Follow-up to #946 / PR #951 (review finding 1, non-gating). Owner: pepper.

Defect

store.sh quarantine-audit on a clean sweep prints an OK message that names only ONE unprovable class: "rows without surviving dead-letter evidence are not provable and were not judged."

There is a second unprovable class the message does not name: a consumed-hashes row whose dead-letter evidence survives but carries an empty observed_hash cannot be convicted either, because conviction requires a match on all four of (kind, id, observed_seq, observed_hash).

An operator reading the current OK concludes no evidence exists, when in fact evidence exists and is unusable. This is a wording fix, not a logic fix — the audit's conviction predicate is correct and must not change.

Real specimen

Dead-letter seq 13, kind bench, id malformed-locator-test: its locator extracts observed_hash: "", and its own note says "deliberately non-conformant."

Fix constraints

  • Wording only: the clean-sweep message must name both residual classes (evidence pruned → unprovable; evidence surviving with empty observed_hash → unprovable).
  • Test fixture MUST be taken from a live lane's own files, not hand-built from the schema or from a description: consumed-hashes rows are genuinely FLAT, dead-letter rows are genuinely NESTED under .locators.*. A hand-built flat dead-letter fixture makes the audit's correct non-conviction look exactly like the defect under hunt (this false-defect near-miss actually happened during the #951 review). The flat/nested asymmetry is correct and is not the finding.

Severity

Upgraded during review from cosmetic to measurement defect: the message misdescribes the audit's own residual class, in the exact place an operator decides whether further investigation is needed.

Follow-up to #946 / PR #951 (review finding 1, non-gating). Owner: pepper. ## Defect `store.sh quarantine-audit` on a clean sweep prints an OK message that names only ONE unprovable class: "rows without surviving dead-letter evidence are not provable and were not judged." There is a second unprovable class the message does not name: a consumed-hashes row whose dead-letter evidence **survives** but carries an **empty `observed_hash`** cannot be convicted either, because conviction requires a match on all four of (kind, id, observed_seq, observed_hash). An operator reading the current OK concludes *no evidence exists*, when in fact evidence exists and is unusable. This is a wording fix, not a logic fix — the audit's conviction predicate is correct and must not change. ## Real specimen Dead-letter seq 13, kind `bench`, id `malformed-locator-test`: its locator extracts `observed_hash: ""`, and its own note says "deliberately non-conformant." ## Fix constraints - Wording only: the clean-sweep message must name both residual classes (evidence pruned → unprovable; evidence surviving with empty `observed_hash` → unprovable). - Test fixture MUST be taken from a live lane's own files, not hand-built from the schema or from a description: consumed-hashes rows are genuinely FLAT, dead-letter rows are genuinely NESTED under `.locators.*`. A hand-built flat dead-letter fixture makes the audit's correct non-conviction look exactly like the defect under hunt (this false-defect near-miss actually happened during the #951 review). The flat/nested asymmetry is correct and is not the finding. ## Severity Upgraded during review from cosmetic to **measurement defect**: the message misdescribes the audit's own residual class, in the exact place an operator decides whether further investigation is needed.
Mos closed this issue 2026-07-30 23:25:35 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#952