{
  "contract": "course-content/1",
  "slug": "publishing-a-practice-honestly",
  "title": "Publishing a Practice Honestly",
  "primitive": "The ritual/1 adoption ladder",
  "audience": "Anyone about to publish a metric about how often their organization does something",
  "summary": "Why a practice record's most tempting page is the one showing a single flattering number — and how the tally/1 ladder replaces 'N observances performed' with a set of figures that each declare who has to act for it to move, using rites.network's own adoption page as the worked case.",
  "track": "ritual-the-present-tense-track",
  "pin": {
    "source": "@flashyos/ritual — unpublished until the first adopter; the tally/1 ladder each figure declaring who has to act for it to move",
    "ref": "flashyos:packages/ritual",
    "revision": "dfa8c88e71077d70535e1ded0cfd85e032fa40d2",
    "state": "current"
  },
  "intro": [
    "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": [
    {
      "n": "01",
      "title": "A ladder of figures, each naming who has to act",
      "outcome": "Explain why 'N observances performed' is a weaker claim than a tally/1 ladder, and what makes the ladder's numbers trustworthy.",
      "body": [
        "'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": {
        "label": "@flashyos/ritual — unpublished, on purpose",
        "href": "https://flashyos.com/packages/ritual"
      }
    },
    {
      "n": "02",
      "title": "The site does not fork the format — it vendors the checker byte-identical",
      "outcome": "Explain why a site teaching ritual/1 vendors the validator rather than reimplementing rendering logic against the spec.",
      "body": [
        "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."
      ]
    },
    {
      "n": "03",
      "title": "A practising subject serves its whole fragment — never a summary",
      "outcome": "Explain why ritual/1 is served whole at a well-known URL rather than as a metrics summary.",
      "body": [
        "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": {
        "label": "@flashyos/ritual — serving",
        "href": "https://flashyos.com/packages/ritual"
      }
    }
  ],
  "faqs": [
    {
      "q": "Why is 'N observances performed' the wrong number to publish?",
      "a": "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."
    },
    {
      "q": "What stops a tally/1 page from quietly showing only the flattering figures?",
      "a": "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."
    },
    {
      "q": "Is rites.network, the site that teaches ritual/1, live yet?",
      "a": "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."
    }
  ],
  "related": [
    {
      "label": "What ritual/1 Refuses, By Design",
      "href": "/academy/curriculum/ritual-what-it-refuses"
    },
    {
      "label": "Measuring the Estate",
      "href": "/academy/curriculum/measuring-the-estate"
    },
    {
      "label": "The Two Tenses",
      "href": "/academy/curriculum/the-two-tenses"
    }
  ]
}