Gate
The gate isfolio check: one offline command that names every problem in a library in one pass and changes nothing. It passes only when no check reports an error.
Every skill runs the gate before it commits, and continuous integration runs the same command. So a broken link, an orphan, a missing field, a placeholder left in a page or an edited record never reaches a reader.
It reads the files as they are and compares the records with git. It never fixes anything: it names each problem with its file and its check, and the skill that made the edit fixes it.
What each kind of check catches
Every check has a name, listed in the checks specification, and every problem the gate reports carries the file, the severity, the check's name and what is wrong. Pick a kind of check to see one problem it catches, as the gate reports it. The files in the lines are examples.
Links
Every link and citation resolves, the way the exported site serves it: an href, an id in backticks, a field of type id, a \fcite. A renamed page whose old links were not rewritten shows up here.
content/notes/tiling.html: error broken-link: `/content/concepts/softmx/` resolves to nothing
The card
Each document meets its genre's card: it sits at the card's path, carries the core metadata and the card's fields, uses one of the card's status words, keeps the parts the machine reads (a concept's definition, a map's rows), and leaves no placeholder behind.
content/concepts/softmax/index.html: error status: status `done` is not one of draft, live, historical, retired
Lifecycle
A permanent document is compared with its first commit, and a frozen one with the commit that froze it. An edit to a committed journal entry or result is caught here, however small.
content/journal/2026/2026-10-02-switched-the-kernel.md: error permanent: a permanent document has changed since its first commit; restore it and record the change in a new document
Maps
Every document except a journal entry is on a map, or linked from a map or from a document on one. Every map the charter names as a home map exists and is not a draft.
content/notes/loose-idea.html: error orphan: is on no map; add it with `folio map add <map> <doc>`
Ids and indices
Ids are unique across the library whatever the genre, compared without regard to case, and a record id is never reused. The generated indices in .folio/ match what folio index would write.
content/notes/attention.html: error unique-id: id `attention` is also the id of content/entries/attention/index.html; ids are unique across the library, whatever their case
Comments
An open question still quotes text that is on its page. An edit that rewrote the passage a reader asked about fails the gate until the question is answered.
content/entries/attention-cost/index.html: error stale-quote: open thread t3 quotes text no longer on the page: `costs grow with the square of the context`
Pack rules
A pack that is switched on adds rule checks across the whole library. The lab pack's uncited-number asks that a number shaped like a measurement cite a result in the same sentence; cites-superseded flags a revised page that cites a superseded result. The knowledge-base pack's unverified-identifier asks that a source's identifiers be verified.
content/notes/check-speed.html: warning uncited-number: a number looks like a measurement and cites no result in its sentence, item or row; cite the result, or wrap it as not measured
Papers
In a paper, every \fcite resolves, every \cite key is in the library's bibliography, and every figure comes from assets/figures/.
content/papers/attention/main.tex: error bib: has a bibliography of its own; use assets/refs.bib
Error, warning or off
Each check has a default severity. The charter changes it by the check's name, under checks:, so a library decides how strict it is without touching a card.
error
Fails the gate. The skill does not commit until it is fixed.
warning
Reported in the same pass, and the gate still passes. A new lab library starts uncited-number here.
off
Not run. A library that has a reason to skip a check says so in its charter, where every reader can see it.
Related
The charter sets each check to error, warning or off. A pack adds rule checks of its own. Every skill that changes a document ends here.
What it holds to git
The gate is why a permanent record stays permanent: the promise is compared with history on every run, not hoped for.