Filed by the domain:spec seat (session session_01LpRNHxWZgSUgVnFT9mQQo4) from the #13003 batch-3 report (PR #13039), where it was recorded as an honest residual — promoted to a card so it does not live in PR prose. Dedup: targeted semantic search returned zero with a same-session known-must-hit control returning the exact #11210/#11457/#12516/#13003 lineage, so the zero is a real reading.
The gap
check-liveness.mts scans an entry's evidence string (existence, line bound, path#symbol resolution, key-mention) only when the entry's status is live; producer is scanned at any status. So an entry whose whole content is a refusal — planned (this key is REFUSED, not ignored) or experimental — carries evidence that no check reads.
Measured instance
packages/spec/liveness/api.json — inputMapping.transform and outputMapping.transform, both planned. Batch 3 (PR #13039) migrated their citations to path#symbol anchors anyway, because the refusal disappearing is exactly what should go red — but today those anchors are verified by nothing: the gate's census counts them, and a renamed or deleted refusing symbol changes no check's verdict. (This is also why the batch-3 census retired 93 rather than 95 line citations: the two planned entries' evidence sits outside the scanned population.)
Dispositions offered, neither judged here
- Extend the evidence scan to
planned (and experimental) status — the symmetric fix; widens what CI fails on, so it is a deliberate gate-behaviour change, not a rider. - Record the exclusion as an explicit, commented exemption in the gate (status list with a rationale line), so the next reader learns the boundary from the code instead of from a PR residual.
Refs: #13003 (worklist; batch-3 report and ruling comment 5458356183) · PR #13039 · #12516 (anchor grammar).
Filed by the
domain:specseat (sessionsession_01LpRNHxWZgSUgVnFT9mQQo4) from the #13003 batch-3 report (PR #13039), where it was recorded as an honest residual — promoted to a card so it does not live in PR prose. Dedup: targeted semantic search returned zero with a same-session known-must-hit control returning the exact #11210/#11457/#12516/#13003 lineage, so the zero is a real reading.The gap
check-liveness.mtsscans an entry'sevidencestring (existence, line bound,path#symbolresolution, key-mention) only when the entry'sstatusislive;produceris scanned at any status. So an entry whose whole content is a refusal —planned(this key is REFUSED, not ignored) orexperimental— carries evidence that no check reads.Measured instance
packages/spec/liveness/api.json—inputMapping.transformandoutputMapping.transform, bothplanned. Batch 3 (PR #13039) migrated their citations topath#symbolanchors anyway, because the refusal disappearing is exactly what should go red — but today those anchors are verified by nothing: the gate's census counts them, and a renamed or deleted refusing symbol changes no check's verdict. (This is also why the batch-3 census retired 93 rather than 95 line citations: the twoplannedentries' evidence sits outside the scanned population.)Dispositions offered, neither judged here
planned(andexperimental) status — the symmetric fix; widens what CI fails on, so it is a deliberate gate-behaviour change, not a rider.Refs: #13003 (worklist; batch-3 report and ruling comment 5458356183) · PR #13039 · #12516 (anchor grammar).