JR-046: record verification tiers for the undesigned review UI

The gate warned on every run that JR-046 had no tier and was being counted as
CI-executable by default. It is the one TBD requirement in the register --
undesigned, pending AR-021/AR-022 and system open question 2 -- so it had no
verification plan to point at.

Tiers say *how* it will be verified, which is knowable: an association endpoint
is CI-testable, the UI is not. That is separable from *what* the assertions
are, which is not knowable until the truth-file interface for unidentified
presence is settled. So it gets T2 + T4 with the assertions explicitly
deferred.

Recording it as T4-only was the tempting alternative, because that drops it out
of CI scope and lifts the CI percentage. It would also have been the
158%-coverage error in miniature: a number improved by reclassifying work
rather than by doing it. An unbuilt requirement should count against coverage
until it is built, so it stays in the denominator.

The gate now runs warning-free.

TRACES: JR-046

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-31 10:48:12 +02:00
co-authored by Claude Opus 5
parent 12f076cf85
commit 305b898b15
+10 -1
View File
@@ -171,6 +171,15 @@ extraction `AR-021`/`AR-022` landing, and on system open question 2 (whether
unidentified presence is published at all) — decomposing it now would fix an unidentified presence is published at all) — decomposing it now would fix an
interface against an undecided upstream. interface against an undecided upstream.
**It carries tiers (T2 + T4) despite being undesigned, and stays in the coverage
denominator.** Tiers say *how* it will be verified, which is knowable — an
association endpoint is CI-testable, the UI is not — without asserting *what*
the assertions are, which is not. Recording it as T4-only would have been the
tempting move, because that drops it out of CI scope and lifts the CI
percentage; it would also have been the 158%-coverage error in miniature, a
number improved by reclassifying work rather than by doing it. An unbuilt
requirement should count against coverage until it is built.
--- ---
## Verification strategy ## Verification strategy
@@ -277,7 +286,7 @@ framework reference and leans on `RollForward` to reach the 10.0 runtime.
| JR-043 | **T1** | Signature matches the shared golden vector **bit-for-bit** | Media < 120 s → no signature; identical result in both repos | | JR-043 | **T1** | Signature matches the shared golden vector **bit-for-bit** | Media < 120 s → no signature; identical result in both repos |
| JR-044 | T1 | Media < 120 s yields no signature and no offset | Exactly 120 s — the boundary both repos must agree on | | JR-044 | T1 | Media < 120 s yields no signature and no offset | Exactly 120 s — the boundary both repos must agree on |
| JR-045 | T1 | `v1:` emitted; an unknown prefix is refused, not parsed | `v2:` signature from a future producer | | JR-045 | T1 | `v1:` emitted; an unknown prefix is refused, not parsed | `v2:` signature from a future producer |
| JR-046 | **TBD** | — | Undesigned; depends on AR-021/AR-022 and system open question 2 | | JR-046 | T2 + **T4** | *Assertions deferred* — recording an association and persisting it is T2; the review UI itself is T4 | Cannot be written until the truth-file interface for unidentified presence is settled (system open question 2) and AR-021/AR-022 land |
Three are worth singling out. **JR-021** and **JR-041** are static checks because Three are worth singling out. **JR-021** and **JR-041** are static checks because
both are requirements to *not do something*, and a prohibition is verified by both are requirements to *not do something*, and a prohibition is verified by