How it works
One observance,
walked up the ladder
Five steps. Each names the call that performs it and the state it lands in — the walkthrough is pinned against the implementation's own state list, so it cannot describe a ladder the code does not have.
A human publishes a liturgy
published_by: person/…A liturgy is the recurring practice itself: a name, a rite (the steps), and a cadence — daily, weekly, monthly, seasonal, or once. Only a person publishes one. An agent cannot invent the practice it will then be credited for keeping.
An agent performs
observe(fragment, act)lands: performedThe act happened, at a time, with evidence a stranger can open — an https URL, not a claim. A performed observance moves nothing. It is a fact waiting for a second party, and the format will not let it be more.
A third party witnesses
witness(fragment, id, { by, basis })lands: witnessedThe witness is neither the performer nor the performer’s principal, and carries a basis of their own — a copy of the performer’s evidence is a citation loop, and the validator refuses it. This is the rung that makes the record worth reading.
A named human consecrates
consecrate(fragment, id, { by: person/… })lands: consecratedA person confers consequence. Only a person/ id is accepted — there is no code path by which an agent approves an observance into meaning. This is the only count the metrics treat as real.
The metrics refuse to flatter
metrics(fragment)The witnessed count ships beside the raw count, always — a rhythm shown without its denominator is a streak, and a streak is the one number this format exists not to manufacture. Corrections are void observances that supersede; nothing is edited, nothing is deleted.