# ADR 0284: The practice canon enumerates the tenets

**Status**: accepted. Extended by the coding-agent outcome binding in [ADR 0311](0311-agent-benefits-compile-as-their-own-transposition.md).

## Context

"The practice" is the category's load word — positioning leads with "an engineering practice for agent-built software" — yet nothing owned its enumeration. At least five surfaces each carried their own account: the brand concept map's nine-noun product role, the positioning document's seven bullets, the machine edition's six-verb loop, the landing specification's eight lifecycle stages beside its fixed five-item project inventory, and the specification's separate reason-to-believe list. No two agreed, and the drift was already substantive: the machine edition's loop omitted retention entirely while the landing page's centerpiece claim is "what you explain once, the project keeps."

The launch-site effort makes this acute. Multiple pages are being drafted in parallel — homepage, practice page, audience pages, trust page, the machine edition — and each explains the practice at a different altitude. Without one source they will keep inventing variants, the same failure the landing specification already fixed once at small scale by freezing the project-inventory list verbatim after draft 02 shuffled four versions of it.

The repo already holds the pattern: the feature canon owns the mechanism account, while the Human and Agent Benefit Canons own value for people and outcomes for coding agents, all as registries with enrolment guards ([ADR 0175](0175-the-feature-canon-compiles-from-a-feature-registry.md), [ADR 0051](0051-canonical-set-parity.md), [ADR 0311](0311-agent-benefits-compile-as-their-own-transposition.md)). What was missing is the layer between them — the obligations the features implement and those outcomes follow from. The bundled-skills canon even names it: "the built-ins ship the practice discern teaches."

## Decision

**The practice is a canonical registry: `scripts/practice_registry.ts` enumerates the tenets, and surfaces render or cite them instead of re-deriving the practice.**

- **A tenet is an obligation, not a feature.** Each can be stated without naming a feature — "done is deterministic", "you decide what lands" — then cites the feature nodes that implement it (`mechanisms`), the Human Benefit Canon clusters it produces (`yields`), the Agent Benefit Canon outcomes it enables (`agentYields`), and the project-inventory items it maintains (`holds`). Every tenet enables at least one coding-agent outcome. The canon is the bridge: features implement tenets; tenets produce human value and agent outcomes.
- **The canon is flat and numbered.** Twelve tenets, ordered as one change meets them, with `arc` (`loop` / `craft` / `conduct`) as rendering metadata rather than canonical structure. Craft tenets — cure the class, write it once — are first-class members: the skills that carry them are bundled precisely because they are part of the practice discern teaches. Conduct tenets — no dead ends; plan, then apply — govern how the practice behaves toward its operators: they oblige the tool rather than the change, which is why they may maintain no inventory item.
- **How a tenet is upheld is explicit, per carrier.** A carrier is a `set:member` key (`verb:done`, `config:standards`, `skill:discern-cure-a-bug`), recorded under one of three tiers: **enforced** (a boundary refuses the violation), **automated** (the machinery performs the obligation without being asked), **taught** (a bundled skill carries the discipline). The tiers are data on the tenet, never derived from a carrier's kind, because one verb enforces for one tenet and automates for another — `done` enforces the deterministic verdict and merely hosts the strand and write-preflight checks that enforce planned effects. Advisory and read-only surfaces serve a tenet without upholding it; they belong in `mechanisms` only.
- **Every bundled skill must be claimed, and the outcome sets are claimed in reverse.** The enrolment guard (`tests/practice_canon_enrolment_test.ts`) holds each bundled skill to a tenet's taught tier or a recorded absence, so a future skill forces a canon decision the moment it exists. The reverse direction runs at the useful altitudes: every feature pillar must be cited at some resolution, every human-benefit cluster yielded, and every individual coding-agent outcome enabled by a tenet or property — or recorded absent with a reason. A future-outcome fixture proves that the guard derives membership from the Agent Benefit Canon instead of a copied list. Citations are checked member-by-member in both directions.
- **Deferred consumers are pinned by fingerprint.** A surface that explains the practice but does not yet render or cite the canon — the brand concept row, the machine edition's practice block — is recorded in `PRACTICE_DEFERRED_CONSUMERS` with a hash of its practice prose. Changing that prose without aligning it to the canon, or re-recording the fingerprint with the change, fails the gate: a deferral cannot be forgotten.
- **The ratchet and the reflection surfaces are one tenet.** "Only better" carries the enforced half (limits never loosen, pins capture gains) and the advisory half (the logbook's readers point at the next gain) in one obligation, matching the brand direction that time is a positive pillar ([ADR 0244](0244-brand-addresses-the-owner.md)).
- **The fixed inventory derives.** The five-item project inventory — its guidance, its working conditions, its checks, its evidence, and its decisions — is registry data (`PROJECT_INVENTORY` rendered by `inventoryPhrase`), each item claimed by the tenets that maintain it, so the landing copy's verbatim-list rule has a source instead of a memory.
- **"Practice" enters the glossary as a common noun.** Lowercase in running prose everywhere; the capitalized form is the glossary headword only. The proper-noun spelling "The Practice" is rejected: it reads as branded methodology, which the concept map's own boundary ("not a vague methodology, consultancy, or ritual") exists to prevent, and it would shrink the category expression the positioning relies on.

The explicit noes: the tenets do not enter the feature canon (they cite it); the properties around them — local, no model inside, stack-neutral, provider-neutral, ordinary files, reversible — are not tenets (they oblige no change to anything, though a property may yield human value or an agent outcome through its nature); commissioning is not a tenet (it is the loop applied to its own installation, which is evidence the loop is universal, not a separate obligation); and node-level reverse enrolment is rejected — mechanism citations are representative, not inventories, and forcing every feature node into tenet claims would bloat the citations into noise.

## Consequences

- The generated `_internal/practice-canon.md` is the internal source page, and `00-orientation/the-practice.md` is the canon's first public citing surface, rendered from the same registry. The machine edition's missing retention step is fixed in this change; the remaining hand-carried surfaces (the brand concept row, the landing pages) stay deferred under fingerprint until their own efforts align them.
- A new bundled skill cannot ship without deciding which tenet teaches it; a renamed verb, config table, feature node, or benefit cluster strands its citation and fails the gate. No guard asserts the count of tenets: growing the canon is a decision, not a defect.
- The tenet layer gives roadmap work a membership test (which tenet does this serve?) and gives claim-checking a skeleton (each tenet's citations bound what its copy may assert).
- The generated canon answers both directions of the coding-agent question: each tenet states what it enables for an agent, and each Agent Benefit Canon outcome indexes the tenets or properties that produce it. Canon Editor exposes the same citation web.
- Holding "Only better" as one tenet spans two tiers — the rendering states which half is enforced and which is advisory, and that split must stay visible in public copy.
- The public leaf's growth to twelve tenets was accommodated by the owner lowering the public-doc leaf-density floor on the trunk, an explicit standards decision taken with consent rather than a branch-side loosening.
- The capitalization question is settled law rather than recurring taste.

## Alternatives considered

- **A two-part canon (loop, then craft) as the recorded structure** — honest about the strata but costs the flat, citable numbering; the arc field keeps the strata available to renderers without spending the structure on it.
- **Grouping the tenets under the human/agent/project frame** — maximal brand alignment with the mark, but several tenets straddle vertices and the fit forces. The frame stays the preamble.
- **Keeping the practice as prose in the brand documents** — every surface keeps re-deriving it, which is the observed failure this record exists to end.
- **Enumerating the tenets as feature-canon nodes** — collapses the obligation layer into the mechanism layer; a tenet must survive its implementation changing, which is exactly what a feature node must not.
- **Deriving the upheld tier from a carrier's kind** — the first implementation did this (any engine carrier read as "refuses the violation"), and review showed it over-claims: `start` does not refuse a trunk edit, and `refresh` cannot make a session arrive knowing. Explicit per-tenet tiers keep the honesty layer honest.
