A green exit is not done
Check the output against what it must contain; the exit code only says the process ended.
The incident
Three in one month. A backup script reported success while two corpora it was supposed to cover were backed up nowhere. A PDF-to-text converter exited cleanly with 21 papers empty. A second converter exited zero having written nothing at all. In each case the dashboard was green and the data was missing.
The rule, and how it is enforced now
- Backups are proven by restore, not by exit code: a weekly drill rebuilds the git server from the offsite copy on a disposable cloud machine and validates a clone.
- Corpus stages are gated on what the output must look like: byte ratios, blank-tier counts, per-document invariants. A stage that writes nothing fails.
- The site’s own lint follows the same idea: it does not trust
draft: false, it checks the page body.