Complete projects, each one a different shape of record. They exist because the alternative was prose: a luria.toml block in a guide is a claim nobody runs, and this repository’s own founding observation is that every surface governed by prose alone had drifted.

tests/test_examples.py builds each of these into a temporary directory, runs the real luria index and luria lint against it, and asserts what came out. So every configuration here is one CI proves, not one someone believed at the time of writing.

Their generated views are committed, and luria index at the repository root regenerates them along with everything else (ADR-078) — so each example can be read here as a finished record, and luria index --check fails if one goes stale. They were gitignored until that was true, on an argument that turned out to conflate committed with hand-maintained.

examplewhat it demonstrates
rfcs-and-specs/two document families beside each other, one browsed as an index and one read as a single document
collocated/no output anywhere — views render beside their sources, the shape a project has before it splits docs/ from record/
many-journals/three journals at three granularities: a devlog, an incident log, a meeting log
external-citations/uid remotes — linted, linked citations to arXiv papers, Jira tickets and CVEs, none of which is a Luria record
knowledge-base/a record of domain content rather than project meta-documentation: two schemes that cite each other and carry separate statuses, with required fields and a one-primary-category rule
world-bible/a story bible: scenes that follow several scenes (a plural reference) and belong to world trajectories drawn from a closed vocabulary with a default — a field that is neither a reference, a tag nor a status
constitution/a record with no code in it at all: an AI assistant’s operating instructions decomposed into values, practices and boundaries, where precedence is a checked reference (BOUNDARY.overrides → PRACTICE) rather than escalating emphasis, and a practice is retired by a boundary from another scheme

To run one by hand:

cd examples/rfcs-and-specs
LURIA_ROOT=$PWD luria index
LURIA_ROOT=$PWD luria lint

Each example is published, as a section of this site

Every example is a whole record — its own luria.toml, its own schemes, its own README — and every one is published, at examples/<name>/ on this project’s site. That is site.include_records (ADR-077):

[luria.site]
include_records = ["examples/*"]

Each match is staged by its own config into a temporary vault, and only the finished content/ is mounted. That indirection is the whole design, and the reason a plain merge does not work: publishable() tells a source from a view with link_base(path) != path.parent, and link_base answers from the reading config’s schemes. Under the root config an example’s VALUE-001.md has no scheme to belong to, so it reads as ordinary prose —

examples/constitution/record/values.d/VALUE-001.md
    link_base=…/record/values.d  own_dir=…/record/values.d  PUBLISHED IN PLACE

— and the parent would publish the fragment and docs/values.md, the document it renders into, with half the views coming from whatever a contributor’s working tree happened to hold, since none of them is committed.

Each example still stands alone, which is what makes the mount possible:

cd examples/constitution
LURIA_ROOT=$PWD luria index
LURIA_ROOT=$PWD luria site --out build/site

tests/test_examples.py::test_every_example_stages_its_own_site stages each one and asserts the two counts that make a page readable: nothing unplaceable, and nothing redirected out to the repository. The second is the sharp one. luria lint checks that a relative target exists on disk; it has no opinion about whether the file it names is ever published. constitution/ cited its values as ../values.d/VALUE-004.md — present, lint-clean, and never a page, because a render = "document" scheme renders its sources into one assembled view. Staging was the only check that read those as links a reader would try to follow. The spelling the fixer produces, ../../docs/values.md#value-4, is the anchor in the view. The same assertion later caught these READMEs linking luria.toml and bare directories: real files, no page, and in a standalone record the repository they redirect to is the wrong one.

A document scheme’s stub must contain {principles}. That is the placeholder render = "document" substitutes every member’s body into, and a stub without it renders the prose and silently drops the documents — luria index still reports “4 VALUEs” and luria lint still passes, because the page it produced is a valid page. constitution/docs/values.md was eight lines of preamble and no values until the site test made the page count worth looking at.

constitution/ also turned up a third, in luria itself rather than in the example: a Superseded practice is still a member of its surface vocabulary, and vocabulary pages were generated by one definition (view_dirs) and hand-written by another (Config.is_generated), which the reference machinery reads. The report scanned a page it should never have opened, found it only after the run that wrote it, and luria index stopped converging. Fixed; the example is what made it visible, about 26 hours after vocabularies shipped (2026-09-03T23:29Z → 2026-09-05T01:19Z).

The merge rule these examples demonstrate

A family table you declare — schemes, fragments, journals, remotes — replaces the shipped default; one you never mention keeps it (LU-ADR-047). rfcs-and-specs/ declares two schemes and has exactly two: no phantom decision index for an ADR scheme nobody asked for. many-journals/ declares only journals, so its scheme family is untouched and the default ADR scheme survives. And collocated/ omits output and gets a genuinely unset key — the view renders beside its sources, because a declared family has no default entry left to inherit from.

Two of these were limits when this directory was first written — the ADR scheme could not be removed, and its output could not be unset by omission — and the tests that pinned them fired the day the rule changed, which is what pins are for.

One limit these examples make visible

active selects from a closed vocabulary — it does not define one. The five statuses (Active, Proposed, Deferred, Superseded, Rejected) are fixed and enforced by the lint, deliberately (LU-ADR-003): an audit across 121 files found thirty distinct spellings of “this one counts”. The five are the default vocabulary rather than a closed law: a project whose decisions are Accepted and Withdrawn declares those words in statuses.yaml and every check follows them.

What active does is pick the in-force state from whatever vocabulary is in effect — it does not add a word to it. active = "Accepted" with the default five names a state no document can hold, so no document is ever in force and the citation checks go quiet while the configuration looks deliberate. That is reported once, against the configuration, rather than as one finding per document.