Gate: evidence-fresh
The test’s last green run still holds: neither the test nor any file in its closure changed since it ran.
| Property | Value |
|---|---|
| Checker | evidence-fresh |
| Confronts | test |
| Blocking by default — new project | yes |
| Blocking by default — existing project | no — informs |
How it measures
Section titled “How it measures”Every other gate confronts text against text. This one confronts an EXECUTION against the revisions it measured: the test went green, and the stamp records the revision of every node in its closure at that moment. If any of them moved, the score is still written and has stopped being true.
It is the failure that makes no noise. A test that breaks screams in the runner; a score
that ages stays green in yesterday’s report, and disappears inside the conclusion of
whoever reads it. Measured in the reference app: utils/login.yaml is composed into 290
scripts — touching it invalidated 290 measurements, and the signal of not one of them
changed.
The ruler for when NOT to judge matters as much as the one for when to fail. A test with
no stamp has no score to expire: that is absence of proof, which is a different debt, with a
different name and a different fix — run it the first time, not revalidate it. Reporting
them together is the defect the edge-level stale has: 30 “never validated” drowned in
1419 “revision advanced”, and the list stops being read.
It is blocking because the fix is known, local and cheap: run the test. There is no domain judgement to make — unlike an undeclared letter, where both ways out are legitimate and the choice belongs to whoever knows the product.
Declaring it
Section titled “Declaring it”gates: - name: evidence-fresh on: [test] check: evidence-fresh