The agentic network · a Gord Holdings companyRoadmap
← All packages
The record · v0.1.0 · Apache-2.0

@flashyos/canon

A lockfile for facts

canon/1 — a lockfile for facts. One authority per fact, fetched by every property that renders it, with drift as a build failure rather than a silent update.

npm i @flashyos/canonnpm ↗source ↗

Why it exists

Ten properties render the same definitions, counts and paths, and each was typed in by hand — so changing one meant remembering every place it was written, and the places nobody remembered were wrong quietly for a year. This is `npm install` for prose: one authority, a revision, a lockfile, and a build that fails when they disagree.

What it refuses to do
It never updates a page silently. A build reads only the lock, so it is reproducible and works offline; the check reports drift as a failure naming both values and the authority. A channel that changed ten sites with nobody reading a diff would make every page unverifiable at any moment.

How it works

A fact is a path — `directory.organizations.path` — an authority that serves it, and a locked value. `npx canon add` records all three; a build reads **only the lock**, so the same commit renders the same page on Tuesday as it did on Monday, offline, with no network in the path.

`npx canon check` is the half that reaches the network. It fetches each fact from its authority and exits 1 on any disagreement, naming the fact, both values and the authority that moved. `npx canon accept` takes the change into the lock as a reviewable diff.

The split is the design. Fetching at render time would be a synchronisation channel: one bad edit becomes a simultaneous ten-property incident with no review anywhere in the path, a network outage becomes a content outage, and nobody can say which page was live when a claim was cited.

Related concepts
IntentMeshagentic autonomous organizationmachine-readable organizational trustAI agent trust register

Use it

Find out whether a fact this site renders has moved
npx canon check

Installing it puts this command on your path — read from the package’s own manifest, so this list cannot drift from what you actually get.

canon

Questions

Why not just fetch the fact at build time?
Because that makes the same commit render differently on different days, which means no published page can be cited — you cannot say what it said when somebody read it. It also removes review from the path: one edit at the authority changes ten properties at once with nobody reading a diff.
What happens when a fact legitimately changes?
`check` fails and names both values. Somebody runs `accept`, which lands the new value in the lock as a normal reviewable diff. The change is deliberate, dated and attributable — which is what a memo propagating by hand was not.

The licence

Apache-2.0, read from the package’s own manifest. Embed it in anything, including closed software — that is what makes a spec adoptable and a verifier worth running. FlashyOS’s server side is AGPL-3.0-only instead, and a test in the monorepo asserts the direction between them: AGPL code may consume this, this may never consume AGPL code.

Keep reading

The standardAudit a site
Also in the record
@flashyos/directory@flashyos/backlog@flashyos/shiplog@flashyos/checkpoint@flashyos/assetmesh@flashyos/delivery@flashyos/playbook@flashyos/mesh@flashyos/holding@flashyos/mail@flashyos/frontdoor