Rites Protocol

Agents observe.
Humans consecrate.

The present tense of the record.

backlog/1 says what an organisation intends. shipped/1 says what it did. ritual/1 is the tense between them: the recurring, witnessed, consequence-bearing act — what an organisation practises, on a rhythm a stranger can check.

Three tenses, one record

The tense between intention and fact

  • backlog/1 — The future

    An intention decays unless somebody restates it.

  • ritual/1 — The present

    A practice holds only while the rhythm holds — and the rhythm is checkable.

  • shipped/1 — The past

    A fact about the past is sealed and never decays.

The ladder

No state is skippable upward

  1. performedan agent

    The act happened, with evidence a stranger can open. It moves nothing yet.

  2. witnesseda second party

    Someone who is neither the performer nor its principal signed — with a basis of their own.

  3. consecrateda named human

    A person conferred consequence. This is the only count that means anything.

void — A correction is a new observance that supersedes the old one. Nothing is edited, nothing is deleted, and a void that names nothing is refused.

Four refusals

What the validator says, in its own words

Each quotation below is a phrase the validator actually throws — the site's tests provoke every one from the vendored implementation and compare, so this page cannot quote a refusal the code does not make.

Agents observe; humans consecrate

A consecration names a person/ and nothing else. There is no code path by which an agent approves an observance into consequence.

the validator's refusalagents observe, humans consecrate — consecration.by must be a person/ id, and no org, agent or flag substitutes for one

Unwitnessed practice moves nothing

No path exists from performed to consecrated. A witness must be a third party, carrying their own basis — a copy of the performer’s evidence is a citation loop, not a witness.

the validator's refusalunwitnessed practice moves nothing — an observance is witnessed before it is consecrated, with no exception for anybody

An observance carries no value and no standing

Money words and amounts are refused at any depth; streaks and scores are refused as derived-only. Coupling to accrual has to be written in reward/1, where the caps live.

the validator's refusalan observance carries no value — accrual belongs to reward/1, see SPEC.md §4

The log is append-only

Nothing is edited and nothing is deleted. A correction is a new observance that supersedes the old one, and a void that names nothing is refused.

the validator's refusala void that names nothing is a deletion with better manners

Three doors in

One implementation, however you arrive

  • Copy the file

    vendor-ritual.mjs imports nothing but node: builtins. Copy it byte-identical and run it before any install.

    node vendor-ritual.mjs check ritual.fragment.json
  • Import the package

    The npm entry IS the vendored file, so both doors run identical code. Unpublished until the first adopter, by estate rule; it travels by copy today.

    import { observe, witness, consecrate } from '@flashyos/ritual'
  • Implement it anywhere

    A JSON Schema for the shape, and a conformance corpus naming the rule each case exercises. A non-JS implementation proves itself by agreeing with every verdict — the corpus is the count, so this page reads it from the file.

    ritual-1.schema.json · conformance/corpus.json

The shape is a JSON Schema, and the conformance corpus — 22 cases, each naming the rule it exercises — is served at conformance/corpus.json. The count above is read from that file at build time, never retyped.

Stated plainly

What does not exist yet

A format that hides its edges is a format that lies.

  • No independent adopter exists yet. Everything that observes a liturgy today is inside the estate that wrote the format, and this page will not pretend otherwise.
  • Not published to npm: publication on the first adopter, never before. The vendored file travels by copy, which is how every record format in the estate actually travels, so being unpublished costs an adopter nothing.
  • No sealing yet — observances becoming checkpoint/1 leaves is version 2, through the shared canonicalisation.
  • No federation of witnesses across fragments.

Keep a calendar

Adopt it with one file

Copy vendor-ritual.mjs — it imports nothing but node: builtins — write your fragment, and check it before any install:

node vendor-ritual.mjs check ritual.fragment.json

The specification is on this site, and the raw Markdown and walkthrough beside it. When an adopter outside the estate keeps a calendar, the package publishes — that is the order of events, and it does not reverse.