ritual/1 · a FlashyOS format

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.

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

Climbed by transition, never by assertion

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.

A fourth state, void, exists only to correct: it names the observance it supersedes, because the log is append-only and a deletion is not on offer.

the doctrine

Four refusals, thrown rather than stated

Each rule below is an error message the format actually produces — quoted here verbatim, and pinned by a test that provokes it from the shipped validator. A principle that is a thrown string cannot drift into a slogan.

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.

“…agents observe, humans consecrate…”
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.

“…unwitnessed practice moves nothing…”
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.

“…accrual belongs to reward/1…”
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.

“…a deletion with better manners…”
integration

Three doors, one implementation

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 does not repeat it.

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

What does not exist yet

The spec, the schema and the conformance corpus live in the monorepo under packages/ritual. It sits beside the other tenses: what shipped, the AAO spec and every package we publish.