warrant 0.7.1 — the runner stops telling beginners they failed
Two defects in the first thing a stranger sees, both in the conformance runner's report rather than its verdict.
A partial implementation was told it had failed. With zero wrong answers and 78 UNRUN — the state every implementer is in on day one — the report ended Not even base grade. See the failures above. There were none. It now says WITHHELD BECAUSE INCOMPLETE — nothing failed, confirms every answered vector was correct, and lists the three cheapest classes to write next.
--self-check accused itself of being broken. The README tells everyone to run it before trusting a green result; against a partial candidate it printed THIS RUNNER DID NOT NOTICE. The runner was fine — a mutation proxy has nothing to corrupt in answers that do not exist. INAPPLICABLE is now its own outcome, decided by running the candidate unmutated first and measuring what each mutation actually changed.
The risk in that fix was making the negative control quietly tolerant, which would be worse than a confusing message. It is asserted red in three directions: a mutation that applies and is missed still fails; a mutation that corrupts nothing about a class the candidate does answer reports THE NEGATIVE CONTROL IS BROKEN; a run where nothing applies is INCONCLUSIVE and says it establishes nothing. The old scoring also credited one mutation with any UNRUN row including the candidate's own — a false DETECTED, now gone.
The worst-hit case was CONTRACT.md's own worked minimum: the program the document tells a newcomer to start from declines everything, so the crash mutation turned 129 UNRUN into 129 ERROR and was still scored a miss. The regression test now extracts that program from CONTRACT.md so the example cannot rot.
The conformance tarball is re-cut. Changing run.py moves the pack's bytes and the digest SPEC §8.6 pins; leaving the 0.7.0 asset in place would have had it compare against a line that no longer matches, which reads as tampering on the one artifact whose purpose is checkable integrity. Same pack version 1.0.0, corrected bytes — the contract did not change, only the runner's diagnosis of it.
Also: repo_map.py resolved the sibling repository only when the checkout directory was literally named warrant, so regenerating from a worktree silently rewrote every cross-repo citation to "resolves nowhere". Identity now comes from the git remote.
No independent gate ran; nothing adopted. No external party has implemented the contract.