Rendered from docs/obligations/0074-a-check-version-is-raised-by-hand-and-nothing-catches-a-stale.md in the Headwater
corpus. Every document on this half of the site is typed by the taxonomy
the descriptor names: corpus.json.
A check version is raised by hand, and nothing catches a stale one
Context
The key carries the version of the check that reached the verdict, which is what invalidates the entries an earlier edition wrote. Nothing derives that number. Two editions of one rule read the same documents and the same lock, and they differ only in code that no digest covers.
Obligation
So an author who changes what a rule decides and leaves the version alone reads the verdicts of the rule before the change. A digest over the compiled rule is the instrument that fits, and no part of this specification asks for one.
Discharge
The fixture question for a correctness root that is a type is the same class of gap. Both name a correctness root whose defect no fixture can reach.
Another version was raised by hand, and again nothing checked it. link.fragment.unresolved went from 2 to 3 when it widened to read a fragment on a resolving path (HW-OBL-0077). The raise is necessary. A warm cache holds edition-2 verdicts about same-document fragments alone, and it would serve them over a corpus whose cross-document fragments were never examined. An author who forgot it would ship a rule that reads more and reports the same, and every gate would stay green.
A verdict ledger now catches a version left alone, where a recorded corpus shows the change (#1105). The test engine/crates/check/tests/editions.rs keeps one row for each rule over each recorded corpus that it reaches. The row holds the version, a fingerprint of the corpus and a digest of every verdict that the cache would store. A digest that moves while the version and the corpus stay fails the test, and the test names the rule. HEADWATER_BLESS does not record that row again, so the bless that DEVELOPING.md prescribes cannot hide the defect. This does not discharge the record. A change that no recorded corpus exercises still passes, and so does a rule change in the same commit as an edit to its corpus. Seven rules have no instance on any recorded corpus. The digest over the compiled rule that this record asks for is still unbuilt.