Sagrada — a linter for the belief state of agent instruction files

uvx sagrada-linter read .

the Graveyard — a demo

When run on 400 of the most starred public repos, 14.5% had zombie rules walking in their agent instruction files.

top 80 by stars in each of five package ecosystems · 393 of 400 readable · not yet hand-checked for false positives, so 14.5% is a ceiling

This reads any public repo’s own history in the browser — no server, every request visible in devtools.

One GitHub request per commit that touched a rule file; GitHub allows 60 an hour per visitor. A long history can spend that in a single read — the CLI has no such limit.

WALKING
deleted, now back — undeclaredno command — this is what the history shows
EXHUMED
deleted, now back — declared, reason on the line: <!-- sagrada:allow — reason -->sagrada-linter restore wrote the reason
INTERRED
deleted, still goneno command — this is what the history shows
ENTOMBED
deleted, still gone — with a dated tombstonesagrada-linter forget wrote it

limitations“The same rule” = the same term on a structured line (term: text or - term — text), lowercased and punctuation-collapsed; the text after the term may differ. Prose instructions are not tracked. This port is simplified — the CLI reads full history, signs a receipt, and wins any disagreement.

the Belief Rot Index — a weekly census of tracked repos

2026-W3138 repos27 CLEAR11 ROTTEN

reposcorezombiesdays walking (oldest)
a tracked developer toolin AGENTS.md · unnamed518101
a tracked agent-tooling libraryin CLAUDE.md · unnamed544187
a tracked agent frameworkin CLAUDE.md · unnamed603222
a tracked agent frameworkin AGENTS.md · unnamed65221
a tracked developer toolin a rule file · unnamed661302
a tracked agent frameworkin AGENTS.md · unnamed671<1
a tracked agent frameworkin AGENTS.md · unnamed7415
a tracked agent-tooling libraryin AGENTS.md · unnamed761170
Cruxia-Labs/cruxia-engineself-listed·1000—
Cruxia-Labs/sagrada-linterself-listed·1000—

Unnamed rows carry real numbers and no identity, itemized from the last reviewed bank (2026-W29).

Try it yourself

The same reading against a full clone. Shallow clones carry no history; the tool says so rather than printing a clean result.

git clone https://github.com/Cruxia-Labs/sagrada-specimen && cd sagrada-specimen && uvx sagrada-linter read .
EXAMEN — sagrada-specimen
reading 1 rule file across 17 commits. nothing leaves this machine.

o RESTORED WITH INTENT  tone
    "Keep error messages plain and unfunny"
    killed   376ce593  2026-03-02
    returned 2ba05a7d  2026-03-28  — with the decision on the books:
    in-file · "restored 2026-04-02: the style guide never shipped"
    not a zombie. an intentional restoration, recorded.

+ WALKING  deploy_gate
    "Always run migrations manually before deploy"
    killed   e48323d1  2026-02-14
    revived  0f6c89af  2026-05-19
    active again in CLAUDE.md:2 today · walking 74 days

sagrada-specimen: 1 walking · 1 restored with intent

the CLI’s own output, captured 2026-08-01 — the day count moves; the commits do not

the gateguard locks every dead rule and fails CI on an undeclared return, with the kill history in the failure. The specimen runs it on itself — three blocked pull requests and one declared restoration in its PR tab.

receiptsFindings carry a signed receipt that recomputes offline — three implementations on disjoint stacks. The verdict does not require trusting the party that produced it.

restoreA flagged rule can be one you re-added on purpose. restore writes the reason onto the line and the reading reports it as intentional. Wrong about your repo? Open an issue with the two commits.