Documentation drifts unless something forces it to stay true. Here the forcing function is a rule, applied in the same commit as every change.
One file lists everything that exists, with where and since when. Anything not yet built is labelled PROPOSED — does not exist yet, and briefs are treated as aspirations, not facts. Updated in the same commit as the change it records.
reality/index.md →CHANGELOG.md is the complete record (one entry per CI tag), the site's Versions page is the per-version ledger, and Updates is the readable story. Same facts, three altitudes.
CHANGELOG.md →Work starts from a written brief, lands as issues worked in public, and ends in a debrief. When this loop reviewed itself it produced a full project review pack — the document this very hub was proposed in.
the review pack →Why it matters to a growing service: every incident,
decision and reversal is findable later. When a .ogg bug resurfaces in six months,
the write-up, the fix commit, and the regression test are one search away — that is the
compounding value a vibe-coded service usually throws away.
Every markdown doc in library/ and team/, indexed by CI at
deploy time. (The team/humans/ area is human-only and deliberately unindexed.)
| Doc | Area | Path |
|---|---|---|
| loading docs.json… | ||
/llms.txt is the agent-facing index of this
site, following the llms.txt convention: what the product
is, the window.__tool API skills for operating the app, the declared workflow it
executes from, and every machine-readable surface this deploy emits —
status.json (this build's test gate), issues.json,
versions.json, updates.json, the user guide as data, and the
screenshot change log. Every URL it lists is checked by the post-deploy live QA, and the
rulebook requires it to be updated in the same commit as any change to the public
surface — so an agent reading it always sees the deployed truth, not a stale map.