Skip to content

Curriculum · The ritual/1 adoption ladder

Publishing a Practice Honestly

3 lessons · For: Anyone about to publish a metric about how often their organization does something

Saved in this browser only.
0/4
done in ritual/1: the Present Tense

ritual/1: the Present Tense · Course 4 of 4

Learn these first: What ritual/1 Refuses, By Design

A cron job can raise 'observances performed' forever without a single reader ever changing their behaviour because of it. A number that measures a machine running rather than a practice actually happening is not a metric worth publishing, however impressive it looks.

This closing track is about the honest alternative — a ladder of figures instead of one headline number, a vendored validator instead of a second implementation, and a served fragment instead of a flattering summary — read through the one site actually built to teach ritual/1 in public.

Three lessons. Take the three courses before this one first; this is the applied case, not new mechanics.

Lessons

01

A ladder of figures, each naming who has to act

You should be able to: Explain why 'N observances performed' is a weaker claim than a tally/1 ladder, and what makes the ladder's numbers trustworthy.

'N observances performed' is entirely within the publisher's own power to raise — a scheduled job can inflate it without any human ever doing anything differently. It measures that a machine ran, not that a practice happened in any sense a reader should care about. The site that teaches ritual/1 in public, incubating in flashy-labs as rites.network — not yet a live domain, so it is named here rather than linked — replaces that single number with a `tally/1` ladder instead: witnessed observances, consecrated observances, adoption, independent adopters, each one declaring who has to act for it to move.

The format itself is what makes this safe rather than merely well-intentioned: a `tally/1` document carrying no figure on the outside half — the half a reader checks, not the half only the publisher can move — simply does not validate. A `--only` filter that happened to drop the human-witnessed figures would have to fail the build, not quietly ship a shorter, more flattering page.

The honest half of that page today is that it names no independent adopter yet — the package stays unpublished until one exists, stated plainly rather than implied around. A reader who finds one number glossed over will re-read everything else on the page looking for more; a page that states its own absence directly is the one that earns the benefit of the doubt on the numbers it does publish.

Source: @flashyos/ritual — unpublished, on purpose

02

The site does not fork the format — it vendors the checker byte-identical

You should be able to: Explain why a site teaching ritual/1 vendors the validator rather than reimplementing rendering logic against the spec.

The four files that ARE the format — the dependency-free validator, the spec, the JSON Schema and the conformance corpus — are vendored byte-identical from flashyos into the site that teaches them, never rewritten locally. The site renders the format; it does not fork it, and a drift test compares the copy against a flashyos checkout beside it, reporting UNKNOWN rather than a false pass when there is nothing to compare against.

This is the same discipline as the estate's charter checkers, applied to a teaching site instead of a governance one: a re-derived implementation is a second place the spec can silently drift from, and this estate has the exact failure on record — eleven vendored charter checkers once agreeing with each other and disagreeing with the real spec in four places. A site whose entire purpose is teaching a format correctly cannot afford to be the next name on that list.

Even the adoption page's own tally validator — `vendor-tally.mjs` — is vendored, and the build runs it over the adoption data before rendering: an edited figure fails the build rather than reaching a reader, proven by a test that makes a change which still validates and only breaks the seal, which is the interesting attack and not the one an obvious test would catch.

03

A practising subject serves its whole fragment — never a summary

You should be able to: Explain why ritual/1 is served whole at a well-known URL rather than as a metrics summary.

A subject practising ritual/1 serves its ENTIRE fragment, verbatim, at `/.well-known/ritual.json` — never a summary. That is a deliberate refusal: a summary strips the evidence URLs a stranger would actually check and hands them only the flattering digits, which is the anti-metric rule this whole track teaches, run backwards.

The distinction matters because a summary and a fragment can describe the same underlying practice and support very different levels of trust. A summary says 'trust me, here are the numbers.' The whole fragment says 'here is every observance, every witness, every basis URL — check any of it yourself,' which is the only version of the claim a stranger does not have to take on faith.

flashyos.com serves its own calendar at that same path, and an estate-wide floor tool checks every default branch's `.well-known/ritual.json` the same way. Publishing a practice honestly, in the end, is one habit repeated at every layer: serve the whole thing, at a fixed URL, and let a stranger's own fetch be the proof rather than your description of it.

Source: @flashyos/ritual — serving

Frequently asked

Why is 'N observances performed' the wrong number to publish?

Because a scheduled job can raise it forever without a human ever doing anything differently — it measures a machine running, not a practice actually happening. A tally/1 ladder replaces it with several figures that each name who has to act for them to move.

What stops a tally/1 page from quietly showing only the flattering figures?

The format itself refuses to validate a document with no figure on the outside half — the half a reader, not just the publisher, can check. A filter that dropped the harder figures would fail the build rather than ship a shorter page.

Is rites.network, the site that teaches ritual/1, live yet?

No — it is incubating in flashy-labs and its domain registration is pending, so it is named here rather than linked. The format it teaches, ritual/1 itself, is live at flashyos and is what this track is pinned against.

Keep going

For agents: this course is served as data at /academy/curriculum/publishing-a-practice-honestly/course.json — every lesson and its source, with a freshness pin.