---
title: Project decisions
description: Dated records of the choices behind discern, including the records later superseded.
aliases:
  - decisions
  - architecture decision records
  - ADRs
---

# Project decisions

These dated records preserve the context and trade-offs behind discern's architecture. They are project history, not product documentation. Read [the manual](../README.md) for current behavior and instructions.

A record captures a significant choice, its context, and the rejected alternatives. Later architecture can supersede that choice without erasing the reasoning that led to it. Current records appear first. Retired records remain available and carry their status into the public decisions pages.

## Current records

<!-- BEGIN GENERATED: current ADR records -->
<!-- Generated by `discern refresh` from the ADR headings on disk. -->

- [0003 — Named metric standards, with an explicit metric-emission convention](0003-named-metric-standards.md)
- [0005 — Declarative config — a comment-preserving editor, `discern config`, and `setup --config`](0005-declarative-config.md)
- [0006 — Opt-in streamed output and fail-fast cancellation for the parallel runner](0006-long-slot-ergonomics.md)
- [0009 — 1.0 — drop backward compatibility, with a one-shot `upgrade`](0009-one-point-zero-drop-backward-compat.md)
- [0011 — Adopt the isolated-worktree workflow for discern's own development](0011-adopt-worktree-workflow.md)
- [0014 — A versioned, reversible migration system for upgrades](0014-versioned-migration-system.md)
- [0017 — Declare capabilities, derive the gate — retire slots + phases](0017-capabilities-model.md)
- [0018 — Consolidate discern vocabulary into four layers](0018-vocabulary-consolidation.md)
- [0019 — Collapse into one binary with a TypeScript-native engine](0019-single-binary-ts-engine.md)
- [0020 — Dissolve `.discern/` — one root config file, config-driven point-and-override, feature toggles](0020-dissolve-discern-dir.md)
- [0021 — Migrations insert a new section's documented block at its canonical position](0021-migrations-insert-documented-sections.md)
- [0022 — Rename the harness to discern](0022-rename-to-discern.md)
- [0023 — Rename and promote the workflow commands](0023-rename-workflow-commands.md)
- [0025 — Generalize the worktree db/dev-server adapters into per-worktree resources with orphan GC](0025-worktree-resources.md)
- [0026 — One typed (Zod) config schema as the single source of truth](0026-typed-config-schema.md)
- [0027 — Plan/apply as the engine's execution model](0027-plan-apply-engine-execution.md)
- [0028 — One result envelope per verb, with normalized failure diagnostics](0028-result-envelope-and-diagnostics.md)
- [0029 — A best-practices audit that splits deterministic from subjective rules](0029-best-practices-audit.md)
- [0031 — One typed provider registry for every agent-specific integration](0031-typed-provider-integration.md)
- [0033 — `status` — a read-only orientation verb with a location-aware default](0033-status-verb-and-location-aware-scope.md)
- [0034 — AGENTS.md is an untracked build artifact, guarded by a currency check](0034-agents-md-untracked-currency-check.md)
- [0035 — A strict, config-only template engine for the built-in guidance](0035-guidance-templating-engine.md)
- [0036 — Unify setup under one zero-config `discern setup`](0036-unify-setup.md)
- [0037 — Setup-incompleteness is an observable state, not a prose handoff](0037-setup-incompleteness-observable.md)
- [0038 — The MCP server runs on the official TypeScript SDK over stdio](0038-official-mcp-sdk.md)
- [0039 — discern ships its own docs to every install via `discern help`](0039-bundled-help-docs.md)
- [0040 — The worktree hooks parse their payload in the binary (no jq)](0040-worktree-hooks-in-the-binary.md)
- [0041 — A self-describing MCP surface built on typed result schemas](0041-self-describing-mcp-surface.md)
- [0043 — The provider registry is the enforced single source for every agent surface](0043-registry-derived-agent-parity.md)
- [0044 — Setup involves the user and proceeds — it does not gate every step](0044-setup-involve-not-gate.md)
- [0045 — The MCP server is core infrastructure, not a feature toggle](0045-mcp-is-core-infrastructure.md)
- [0047 — `done` blocks a fix stage that strands uncommitted changes](0047-fix-stage-strand-detection.md)
- [0049 — Ship the fix-the-class discipline as built-in guidance and a bundled skill](0049-bug-class-discipline-built-in.md)
- [0050 — Run the merge check first, as a fail-fast precondition](0050-merge-check-fail-fast.md)
- [0051 — Every internal canonical set is tied to its satellites by a forcing function](0051-canonical-set-parity.md)
- [0052 — Worktrees live in a configurable sibling directory, not nested `.claude/worktrees`](0052-worktree-sibling-placement.md)
- [0053 — A gate guard keeps comments in the present tense, not narrating the codebase's past](0053-comment-currency-guard.md)
- [0054 — One module owns process spawning — git and `sh -c` funnel through shared runners](0054-subprocess-single-source.md)
- [0055 — `discern update` — the third verb in the worktree lifecycle, bundling merge with re-materialize](0055-update-verb.md)
- [0057 — Hold a rate, not a raw count (`per`)](0057-rate-standards.md)
- [0058 — `discern start` — spawn a worktree from the main checkout, and a status guardrail that points at it](0058-start-verb-spawn-worktree-from-trunk.md)
- [0059 — `[worktree.setup].ensure` — a convergent setup bucket that re-runs every pass](0059-worktree-setup-ensure.md)
- [0060 — Worktree shell commands adopt the gate's capture-on-failure output convention](0060-worktree-command-output-capture.md)
- [0062 — The MCP server tracks its own working root, and retires location-based tool visibility](0062-mcp-server-working-root.md)
- [0063 — `discern doctor` prints the execution model — facts, not judgments](0063-doctor-execution-model.md)
- [0064 — `update` reports what changed beneath the branch](0064-update-change-summary.md)
- [0065 — `discern setup` keeps its promises](0065-setup-keeps-its-promises.md)
- [0067 — Accept validates the exact tree it lands, fast-pathed by a gate receipt](0067-accept-validates-the-landed-tree.md)
- [0068 — Tests inject env/cwd seams so the suite can run `--parallel`](0068-parallel-safe-tests-env-cwd-injection.md)
- [0069 — Setup proposes installed providers once and commits the selection](0069-agent-auto-detect-at-setup.md)
- [0070 — An agent that reads the canonical AGENTS.md is modelled as "reuse-canonical"](0070-reuse-canonical-guidance.md)
- [0071 — The settings seed/merge seam is provider-driven, not a Claude special-case](0071-provider-driven-settings-seed.md)
- [0072 — A provider's MCP wiring is a typed status, accounted by a forcing function](0072-typed-mcp-status-forcing-function.md)
- [0073 — discern co-manages Codex's auto-generated environment.toml, and reuses the cwd-based teardown verb for its cleanup](0073-codex-worktree-lifecycle-comanagement.md)
- [0074 — Claude Code and GitHub Copilot co-own the shared `.mcp.json`, through one stdio writer](0074-co-owned-mcp-json.md)
- [0075 — `discern setup` is a staged, consent-driven handshake](0075-setup-staged-handshake.md)
- [0076 — The engine commits discern machinery it scaffolds](0076-engine-commits-scaffolded-machinery.md)
- [0077 — The setup agent is the configuration engine — transparency over interrogation](0077-setup-agent-is-the-configuration-engine.md)
- [0078 — setup steps are stateless machine-readable pages with derived per-step proof](0078-setup-pages-and-per-step-proof.md)
- [0079 — `improvement` is a coach, not an audit](0079-improvement-is-a-coach-not-an-audit.md)
- [0080 — The agent map has one configured root](0080-configured-agent-map-root.md)
- [0081 — `discern setup accept`, a main-checkout landing command for the finished setup](0081-setup-accept-command.md)
- [0082 — Codex project config grants the discern worktree root and narrow Git rules](0082-codex-project-config-writable-root.md)
- [0083 — Captured diagnostic output is normalized and offloaded when truncated](0083-normalize-and-offload-diagnostic-output.md)
- [0084 — Co-change coupling detection is a non-blocking advisory, recomputed on demand](0084-co-change-coupling-advisory.md)
- [0085 — Migrations validate before schema stamping and refuse newer configs](0085-validate-migrations-before-schema-stamping.md)
- [0086 — setup serves ready-to-relay messages and gates a fresh scaffold on a `--confirmed` attestation](0086-setup-serves-relay-messages-and-a-consent-attestation.md)
- [0087 — Prefix the bundled skills with `discern-` and expand the set to nine](0087-prefix-and-expand-bundled-skills.md)
- [0088 — the fresh setup welcome decorates only on TTY](0088-fresh-setup-welcome-decorates-only-on-tty.md)
- [0089 — Machine-local provider settings stay ignored](0089-machine-local-provider-settings-stay-ignored.md)
- [0090 — setup proves the project runs in a worktree, and `smoke` joins the known capabilities](0090-setup-proves-worktree-viability.md)
- [0092 — `upgrade` reconciles the fixed `discern.toml` scaffold](0092-upgrade-reconciles-config-scaffold.md)
- [0093 — `upgrade` reconciles the discern `.gitignore` block](0093-upgrade-reconciles-gitignore-block.md)
- [0094 — Final lifecycle checks require clean trees](0094-final-lifecycle-checks-require-clean-trees.md)
- [0095 — Standardize the prelaunch CLI vocabulary](0095-prelaunch-cli-vocabulary.md)
- [0096 — Passing jobs keep output artifacts](0096-passing-jobs-keep-output-artifacts.md)
- [0097 — Publish generated JSON result contracts](0097-publish-json-result-contracts.md)
- [0098 — Accept refreshes the landing checkout](0098-accept-refreshes-the-landing-checkout.md)
- [0099 — Consolidate the authored surface under a visible `discern/` namespace](0099-consolidate-authored-surface-under-discern-namespace.md)
- [0100 — The documentation tree is the agent-maintained map, not the project's own docs](0100-project-map-is-the-agents-map.md)
- [0101 — Retire the `[features]` toggles](0101-retire-the-features-toggles.md)
- [0102 — One paths registry, rendered artifacts, and leakage guards](0102-paths-registry-and-rendered-artifacts.md)
- [0103 — Setup grounds itself in the repo's real state — detected default branch, git-init-first without git, a welcome everywhere](0103-setup-holds-up-on-imperfect-repos.md)
- [0104 — `discern uninstall` is the exit-honesty verb — registry-derived removal, CLI-only](0104-uninstall-is-the-exit-honesty-verb.md)
- [0105 — Interruption reaches the gate's detached job groups](0105-interruption-reaches-detached-gate-jobs.md)
- [0106 — `standards --pin` captures a measured gain and carries the gate receipt across it](0106-standards-pin-carries-the-gate-receipt.md)
- [0108 — One global timeout bounds every gate job](0108-gate-job-timeout.md)
- [0109 — `discern start` accepts an optional name, normalised to a branch-safe slug](0109-worktree-start-optional-name.md)
- [0110 — The landing model — pull from any ref, land only on the trunk](0110-the-landing-model.md)
- [0111 — The MCP surface refuses undeclared arguments, and `discern_start` takes a cross-project `path`](0111-cross-project-path-and-strict-tool-schemas.md)
- [0112 — a measurement receipt lets check → pin measure once](0112-standard-measurement-receipt.md)
- [0113 — installing a new dependency is a consent point in setup](0113-installing-a-dependency-is-a-consent-point.md)
- [0114 — a green gate emits the receipt](0114-the-gate-emits-the-receipt.md)
- [0115 — under a nested project root, every verb works correctly or refuses loudly](0115-nested-root-verbs-work-or-refuse.md)
- [0116 — Receipts vouch only for the pinned tree, and accept lands the validated sha](0116-receipts-vouch-only-for-the-pinned-tree.md)
- [0117 — Temp output artifacts are reaped by age, from one registry](0117-temp-output-artifacts-are-reaped-by-age.md)
- [0119 — bare `discern` opens the operator's desk](0119-bare-discern-opens-the-operators-desk.md)
- [0120 — The launch verb canon — questions are nouns, actions are imperatives](0120-launch-verb-canon.md)
- [0125 — An explicit `[project] agents = []` means no providers](0125-explicit-empty-agents-means-no-agents.md)
- [0126 — Internal ADR citations never ship](0126-no-adr-citations-in-shipped-strings.md)
- [0127 — Map freshness ships file-linked facts, not verdicts](0127-map-freshness-ships-file-facts.md)
- [0128 — The ignore block enumerates ownership; compiled guidance is tracked](0128-enumerated-ownership-tracked-guidance.md)
- [0129 — The public site lives in-repo behind one fetch handler](0129-site-lives-in-repo-behind-one-fetch-handler.md)
- [0130 — The docs site renders the help tree through the shared discovery module](0130-docs-site-renders-the-help-tree.md)
- [0131 — Setup never offers to adopt existing docs — and "docs tree" retires with it](0131-setup-never-adopts-existing-docs.md)
- [0133 — Standards join the gate — verified always, measured by default](0133-standards-join-the-gate.md)
- [0134 — Landing attests consent — `accept` requires a `--confirmed` attestation](0134-accept-attests-consent.md)
- [0135 — Site pages use build-time React and a static runtime](0135-site-pages-use-build-time-react-and-static-runtime.md)
- [0136 — Third-party notices derive from the compile graph](0136-third-party-notices-derive-from-the-compile-graph.md)
- [0137 — Project Scripts live under the `script` command](0137-project-scripts-live-under-the-script-command.md)
- [0138 — All ruled config banners are managed regions](0138-all-ruled-config-banners-are-managed.md)
- [0139 — The design system is an independently versioned package](0139-the-design-system-is-an-independent-package.md)
- [0140 — Frontmatter is a gate-validated schema and `publish: false` is the sole page-level withhold](0140-validated-frontmatter-and-the-publish-predicate.md)
- [0141 — ADR citations take one strippable form and strip at render time](0141-adr-citations-strip-at-render.md)
- [0142 — Customer binaries carry only the public documentation projection](0142-customer-binaries-carry-only-public-docs.md)
- [0143 — Decision records render on the web as project history outside product guidance](0143-decisions-on-the-web.md)
- [0144 — Site URLs are canonical at the apex and redirects resolve in one hop](0144-canonical-site-urls-and-one-hop-redirects.md)
- [0145 — The production site deploys only from release tags](0145-production-site-deploys-only-from-release-tags.md)
- [0146 — The gate validates the map's substance, and the CLI reference is generated](0146-docs-integrity-gate-and-generated-cli-reference.md)
- [0147 — Ignored-file drift uses bounded hybrid fingerprints](0147-ignored-drift-uses-bounded-hybrid-fingerprints.md)
- [0148 — Strand detection covers every gate stage](0148-strand-detection-covers-every-gate-stage.md)
- [0149 — The project mark is the Unicode glyph ◮](0149-the-mark-is-the-unicode-glyph.md)
- [0150 — Markdown prose is stored unwrapped](0150-markdown-prose-is-stored-unwrapped.md)
- [0151 — The desk starts tasks and opens agents](0151-the-desk-starts-tasks-and-opens-agents.md)
- [0152 — Slow workflows prove predictable write authority before project work](0152-slow-workflows-prove-write-authority-first.md)
- [0153 — `[repository]` owns shared checkout policy and convergence](0153-repository-owns-shared-checkout-convergence.md)
- [0154 — Launch standards recalibrate to the public corpus at programme end](0154-launch-standards-recalibrated-to-the-public-corpus.md)
- [0155 — Standalone standards share the gate job pipeline](0155-standalone-standards-share-the-gate-job-pipeline.md)
- [0156 — The permanent landing page and the /install endpoint](0156-permanent-landing-page-and-install-endpoint.md)
- [0157 — The desk owns its launched child sessions](0157-the-desk-owns-launched-child-sessions.md)
- [0158 — One standard YAML parser for all frontmatter](0158-one-standard-yaml-parser-for-frontmatter.md)
- [0159 — Inherited-terminal children have one owned lifecycle](0159-inherited-terminal-children-have-one-owned-lifecycle.md)
- [0160 — A local logbook of discern's own use, on by default, with advisory-only readers](0160-local-logbook-advisory-readers.md)
- [0161 — Standards hold growth-proof numbers, and a breach from the work itself escalates](0161-growth-proof-standards-and-breach-escalation.md)
- [0162 — The logbook records its full vocabulary from day one, as evidence rather than inference](0162-logbook-day-one-vocabulary.md)
- [0163 — The patterns family houses its reset as a CLI-only imperative subcommand](0163-patterns-reset-cli-only.md)
- [0164 — The glossary compiles from a term registry](0164-glossary-compiles-from-a-term-registry.md)
- [0165 — Git-admin state shares one namespace without changing its lifetime](0165-git-admin-state-namespaced-by-lifetime.md)
- [0166 — Coding-agent identity is advisory logbook evidence from one catalogue](0166-agent-identity-is-advisory-logbook-evidence.md)
- [0167 — The term registry polices the vocabulary](0167-term-registry-polices-the-vocabulary.md)
- [0168 — The gate declares jobs](0168-the-gate-declares-jobs.md)
- [0169 — The launch glossary canon](0169-the-launch-glossary-canon.md)
- [0170 — File ownership is required registry data](0170-file-ownership-is-registry-data.md)
- [0171 — Glossary display and matching are separate registry data](0171-glossary-display-and-matching-are-separate-data.md)
- [0172 — Hints compile from a hint registry, and the envelope owns all advisory prose](0172-hints-compile-from-a-registry.md)
- [0173 — Trim the bundled skills to seven, and split delivery between skills and hints](0173-trim-the-bundled-skills-to-seven.md)
- [0174 — Agent document discovery is regions, search, then canonical targets](0174-agent-document-discovery-funnel.md)
- [0175 — The feature canon compiles from a feature registry](0175-the-feature-canon-compiles-from-a-feature-registry.md)
- [0176 — The closed sets are a closed set](0176-the-closed-sets-are-a-closed-set.md)
- [0177 — The compiled agent file opens as the project's own document](0177-compiled-agent-file-opens-as-the-projects-own.md)
- [0178 — `discern tidy` is the embedded convention for discern-owned surfaces](0178-discern-tidy-is-the-embedded-convention-for-discern-owned-surfaces.md)
- [0179 — The feature canon carries an agent-experience axis](0179-the-feature-canon-carries-an-agent-experience-axis.md)
- [0180 — Every spawn surface declares its interrupt contract](0180-every-spawn-surface-declares-its-interrupt-contract.md)
- [0181 — An SSOT claim must anchor a declared canonical set](0181-an-ssot-claim-must-anchor-a-declared-canonical-set.md)
- [0182 — Operator commands resolve `discern` to the running engine](0182-operator-commands-resolve-discern-to-the-running-engine.md)
- [0183 — Agent task search uses an audience-specific ranker](0183-agent-task-search-uses-an-audience-specific-ranker.md)
- [0184 — Markdown writers preserve or refuse frontmatter, never restructure it](0184-markdown-writers-preserve-or-refuse-frontmatter.md)
- [0186 — ADR number uniqueness is gate-enforced, with an in-flight collision scan](0186-adr-number-uniqueness-is-gate-enforced.md)
- [0187 — tidy checks diagram geometry in the Markdown it formats](0187-tidy-checks-diagram-geometry.md)
- [0188 — The receipt relays as one line; the page is pulled](0188-the-receipt-relays-as-one-line.md)
- [0189 — A matched gotchas trap inlines into the gate failure](0189-a-matched-gotchas-trap-inlines-into-the-gate-failure.md)
- [0190 — Cohort findings lift the provider-comparison deferral, under standing conditions](0190-cohort-findings-lift-the-provider-comparison-deferral.md)
- [0191 — An eighth bundled skill teaches the write-once discipline](0191-an-eighth-bundled-skill-write-it-once.md)
- [0192 — static guidance earns delivery by the routing test](0192-static-guidance-earns-delivery-by-the-routing-test.md)
- [0193 — discern does not enforce at the vendor security boundary](0193-discern-does-not-enforce-the-vendor-security-boundary.md)
- [0194 — Standing pre-authorization is a recorded, machine-checked grant — `[acceptance]`, covered landings, and the desk's effort grant](0194-standing-pre-authorization-is-a-recorded-checked-grant.md)
- [0195 — Fresh maps and neutral scopes stay inside discern-owned paths](0195-fresh-maps-and-neutral-scopes-stay-inside-owned-paths.md)
- [0196 — Coupling advice runs with the gate by default](0196-coupling-advice-runs-with-the-gate-by-default.md)
- [0197 — Every standard declares its direction](0197-standard-direction-is-required.md)
- [0198 — Worktree port export is opt-in](0198-worktree-port-export-is-opt-in.md)
- [0199 — macOS release binaries are Developer ID signed and notarized](0199-macos-release-binaries-are-developer-id-signed-and-notarized.md)
- [0200 — The ADR index is a refresh-maintained artifact, opted into by markers](0200-refresh-maintained-adr-index.md)
- [0201 — Artifact validators ship or record their exemption](0201-artifact-validators-ship-or-record-their-exemption.md)
- [0202 — The gate ships the map-integrity preflight, scoped to domain-neutral rules](0202-the-gate-ships-the-map-integrity-preflight.md)
- [0203 — Discern co-authors only commits it composes](0203-discern-co-authors-only-commits-it-composes.md)
- [0205 — Browser Workflow semantics are explicit Markdown projections](0205-browser-workflow-semantics-are-explicit-markdown-projections.md)
- [0206 — Patterns finding tone is presentation only](0206-patterns-finding-tone-is-presentation-only.md)
- [0207 — Hint follow-through is declared and episode-based](0207-hint-follow-through-is-declared-and-episode-based.md)
- [0208 — Public contracts version by schema major](0208-public-contracts-version-by-schema-major.md)
- [0209 — Fresh seed grants cover pure documentation](0209-fresh-seed-grants-cover-pure-documentation.md)
- [0210 — Effectful verb starts are paired logbook events](0210-effectful-verb-starts-are-paired-logbook-events.md)
- [0211 — Agent-context artifacts carry no provenance marker](0211-agent-context-artifacts-carry-no-provenance-marker.md)
- [0212 — The fleet test-run cap is N OS-file-lock slots under the git common dir](0212-fleet-test-run-cap-os-lock-slots.md)
- [0213 — `await` blocks on authoritative fleet conditions, with the logbook as wake signal only](0213-await-blocks-on-authoritative-fleet-conditions.md)
- [0214 — MCP instructions render operating policies; guidance remains authored](0214-mcp-instructions-render-operating-policies.md)
- [0215 — Landing receipts travel as bot-authored Git notes with fetch-only opt-in transport](0215-landing-receipts-travel-as-git-notes.md)
- [0216 — Temp retention is repository-throttled and inspection-bounded](0216-temp-retention-is-repository-throttled-and-inspection-bounded.md)
- [0217 — Envelope command references render per delivery surface](0217-envelope-command-references-render-per-surface.md)
- [0218 — `docs` owns the manual; `help` owns CLI reference](0218-docs-owns-the-manual-help-owns-cli-reference.md)
- [0219 — The public install schema starts at 1](0219-public-install-schema-starts-at-one.md)
- [0220 — Self-supplied commands count for nothing in setup assurance](0220-self-supplied-commands-count-for-nothing-in-assurance.md)
- [0221 — Depth-indent discern.toml as the canonical tidy convention](0221-depth-indent-discern-toml.md)
- [0222 — The frozen contract surface completes the vocabulary canon before the first tag](0222-frozen-contracts-complete-the-canon.md)
- [0223 — Conversation consent survives an unreadable committed landing policy](0223-conversation-consent-survives-an-unreadable-landing-policy.md)
- [0224 — Trend comparability is setup equality, and analysis skips setup-era events](0224-trend-comparability-is-setup-equality.md)
- [0225 — Contained-worktree reclaim is offer-only and keeps the branch ref](0225-contained-worktree-reclaim-is-offer-only.md)
- [0226 — Setup separates installation evidence from terminal launchers](0226-setup-separates-installation-evidence-from-terminal-launchers.md)
- [0228 — The feature canon carries a plain-language register](0228-the-feature-canon-carries-a-plain-language-register.md)
- [0229 — Practice stats are counted, local, and never comparative](0229-practice-stats-are-counted-local-and-never-comparative.md)
- [0231 — Prose density shares one versioned corpus](0231-prose-density-shares-one-versioned-corpus.md)
- [0232 — `await` continuations spend the transport budget](0232-await-continuations-spend-the-transport-budget.md)
- [0233 — JUnit XML joins diagnostic auto-detection](0233-junit-xml-joins-diagnostic-auto-detection.md)
- [0234 — Tips are the desk's human advisory channel](0234-tips-are-the-desks-human-advisory-channel.md)
- [0235 — Plain renderings live on the glossary entry](0235-plain-renderings-live-on-the-glossary-entry.md)
- [0236 — Tip adoption clears evidence per tip across comparable setups](0236-tip-adoption-clears-evidence-per-tip-across-setups.md)
- [0237 — discern ships under the Functional Source License with an Apache-2.0 future license](0237-ship-under-the-functional-source-license.md)
- [0238 — Contributions are covered by a contributor license agreement](0238-contributions-are-covered-by-a-cla.md)
- [0240 — Discern-authored project payloads use Apache-2.0](0240-discern-authored-project-payloads-use-apache-2-0.md)
- [0242 — Durable receipts use a versioned DSSE-compatible envelope](0242-durable-receipts-use-a-versioned-dsse-envelope.md)
- [0243 — Await continuations use short repository-local handles](0243-await-continuations-use-short-repository-local-handles.md)
- [0244 — The brand addresses the owner and judges only the work](0244-brand-addresses-the-owner.md)
- [0245 — The receipt becomes the proof](0245-receipt-renamed-to-proof.md)
- [0246 — `discern map --export` reads a configured scope as an ordered reading list](0246-map-export-reads-scopes-as-reading-lists.md)
- [0247 — Declared generated artifacts regenerate; they are never merged textually](0247-generated-artifacts-regenerate-never-merge.md)
- [0248 — Crashes leave a report and a distinct exit code](0248-crashes-leave-a-report-and-a-distinct-exit-code.md)
- [0249 — Self-shims cache per engine identity; sweep pages stay budget-bounded](0249-self-shims-cache-per-identity-sweep-pages-stay-budget-bounded.md)
- [0250 — Discern-managed human output declares semantic groups](0250-discern-managed-human-output-declares-semantic-groups.md)
- [0251 — Every authored Deno function declaration carries JSDoc](0251-function-declarations-require-jsdoc.md)
- [0252 — The fleet test-run cap is enforced at the test command boundary](0252-fleet-test-run-cap-at-test-command-boundary.md)
- [0253 — Durable proofs project runtime receipts](0253-durable-proofs-project-runtime-receipts.md)
- [0254 — MCP startup loading remains an environment-only experiment](0254-mcp-preload-remains-an-environment-only-experiment.md)
- [0255 — Status is a measured responsive dashboard over one result model](0255-status-is-a-measured-responsive-dashboard.md)
- [0256 — The patterns report keeps each detector's strongest findings](0256-patterns-findings-bounded-per-detector.md)
- [0257 — The cross-agent reference compiles from a canonical registry](0257-cross-agent-reference-compiles-from-a-canonical-registry.md)
- [0258 — Every `DISCERN_*` environment contract has one membership authority](0258-every-discern-environment-contract-has-one-membership-authority.md)
- [0259 — Generated groups opt in to review metadata; registered Markdown uses heading-aware diffs](0259-generated-groups-opt-in-to-review-metadata.md)
- [0260 — The integration coverage compiles from the provider registry](0260-integration-coverage-compiles-from-the-provider-registry.md)
- [0261 — The prepare inner loop runs the [generated] regenerations](0261-prepare-runs-the-generated-regenerations.md)
- [0262 — Receipt-eligible runs stop at the pre-group strand checkpoint](0262-receipt-eligible-runs-stop-at-the-pre-group-strand-checkpoint.md)
- [0263 — A ninth bundled skill routes wait-shaped asks to `await`](0263-a-ninth-bundled-skill-await-the-fleet.md)
- [0264 — Tracked refresh convergence precedes landing](0264-tracked-refresh-convergence-precedes-landing.md)
- [0265 — Removed worktree paths authorize bounded reappearance cleanup](0265-removed-worktree-paths-authorize-bounded-reappearance-cleanup.md)
- [0266 — Public failure recovery is classified by error family](0266-public-failure-recovery-is-classified-by-error-family.md)
- [0267 — Operational contracts stay outside agent copy](0267-operational-contracts-stay-outside-agent-copy.md)
- [0268 — The benefit canon transposes the feature registry](0268-the-benefit-canon-transposes-the-feature-registry.md)
- [0270 — The benefit canon separates commercial value from claim qualification](0270-the-benefit-canon-separates-value-from-claim-qualification.md)
- [0271 — Destructive drops retain bounded recovery refs](0271-destructive-drops-retain-bounded-recovery-refs.md)
- [0272 — Logbook lifecycle actions require terminal confirmation, and archives remain readable](0272-logbook-lifecycle-actions-require-terminal-confirmation.md)
- [0273 — Validation comparisons require complete keyed semantic evidence](0273-validation-comparisons-require-complete-keyed-semantic-evidence.md)
- [0274 — Validation findings separate matched and cross-context divergence](0274-validation-findings-separate-matched-and-cross-context-divergence.md)
- [0275 — Validation workflows use stream-bounded change cycles](0275-validation-workflows-use-stream-bounded-change-cycles.md)
- [0276 — Patterns recommendations require project-local decision evidence](0276-patterns-recommendations-require-project-local-decision-evidence.md)
- [0277 — Patterns investigations preserve source findings](0277-patterns-investigations-preserve-source-findings.md)
- [0278 — WSL support is proven by a hosted WSL 2 gate lane that publication requires](0278-wsl-support-is-proven-by-a-hosted-wsl2-gate-lane.md)
- [0279 — External terminal rendering crosses one Discern-owned process boundary](0279-external-terminal-rendering-crosses-one-process-boundary.md)
- [0280 — Results pair one structured contract with authored Markdown](0280-authored-markdown-result-presentations.md)
- [0281 — Main fleet status is a decision brief](0281-main-fleet-status-is-a-decision-brief.md)
- [0282 — Self-invocations carry recorded provenance](0282-self-invocations-carry-recorded-provenance.md)
- [0283 — Seed the adoption record in the shipped skeletons](0283-skeletons-seed-the-adoption-record.md)
- [0284 — The practice canon enumerates the tenets](0284-the-practice-canon-enumerates-the-tenets.md)
- [0285 — Agent instructions replace Guidance throughout the live product](0285-agent-instructions-replace-guidance.md)
- [0286 — Configured source paths expose registry-derived live references](0286-configured-source-paths-expose-live-references.md)
- [0287 — Terminal Markdown delegates to the design system](0287-terminal-markdown-delegates-to-the-design-system.md)
- [0288 — Canon Editor edits the canon through its projections](0288-the-canon-editor-edits-the-canon-through-its-projections.md)
- [0289 — Production binaries embed only product-reachable npm packages](0289-production-binaries-embed-only-product-reachable-npm-packages.md)
- [0290 — Discern owns the default interactive Markdown reading loop](0290-discern-owns-the-default-interactive-markdown-reading-loop.md)
- [0291 — The await call cap is an environment-only valued experiment](0291-the-await-call-cap-is-an-environment-only-experiment.md)
- [0292 — The demand canon counters the benefit canon](0292-the-demand-canon-counters-the-benefit-canon.md)
- [0293 — Checkpoint declarations interlock the gate through open questions and relevance-sensitive subjects](0293-checkpoint-declarations-interlock-the-gate.md)
- [0294 — The merge-base governs checkpoint policy](0294-the-merge-base-governs-checkpoint-policy.md)
- [0295 — One question vocabulary serves the improvement and checkpoint memberships](0295-one-question-vocabulary-serves-two-memberships.md)
- [0296 — `when` delegates trigger conditions to the project under an explicit v1 execution boundary](0296-when-delegates-trigger-conditions-under-a-v1-boundary.md)
- [0297 — Checkpoint modes are the closed stop/advise pair](0297-checkpoint-modes-are-the-stop-advise-pair.md)
- [0298 — Declaration evidence binds Proof currency and variance authorization](0298-declaration-evidence-binds-proof-currency-and-variance-authorization.md)
- [0299 — Checkpoint read surfaces mirror the gate without effects](0299-checkpoint-read-surfaces-mirror-the-gate-without-effects.md)
- [0300 — Checkpoint observation is drained metadata, never a verdict](0300-checkpoint-observation-is-drained-metadata-never-a-verdict.md)
- [0301 — The improvement coach closes the checkpoint loop](0301-the-coach-closes-the-checkpoint-loop.md)
- [0302 — Configured scalar docs join the live path-reference vocabulary](0302-configured-scalar-docs-join-the-live-path-reference-vocabulary.md)
- [0303 — The shipped checkpoint set has four stops and six advisories](0303-the-shipped-checkpoint-set.md)
- [0304 — A tenth bundled skill places the checkpoint](0304-a-tenth-bundled-skill-places-the-checkpoint.md)
- [0305 — The Boundary Canon owns discern's noes](0305-the-boundary-canon-owns-discerns-noes.md)
- [0306 — Status defaults to a bounded orientation projection](0306-status-defaults-to-a-bounded-orientation-projection.md)
- [0307 — CI reports checkpoint review and Proof retains drops](0307-ci-reports-checkpoint-review-and-proof-retains-drops.md)
- [0308 — Checkpoint triggers use bounded facts and a versioned command input](0308-checkpoint-triggers-use-bounded-facts-and-versioned-input.md)
- [0309 — Repository question files are governed content](0309-repository-question-files-are-governed-content.md)
- [0310 — Amendment notes consolidate into one timeless block, and supersession hygiene is gate-enforced](0310-amendment-notes-consolidate-and-read-timelessly.md)
- [0311 — Agent benefits compile as their own transposition](0311-agent-benefits-compile-as-their-own-transposition.md)
- [0312 — `worktrees` opens a cwd-equivalent child shell](0312-worktrees-opens-a-cwd-equivalent-child-shell.md)
- [0313 — Setup completion and acceptance bind one final Proof](0313-setup-completion-and-acceptance-bind-one-final-proof.md)
- [0314 — The public manual and project Map are separate corpora on one document engine](0314-separate-public-manual-and-project-map.md)
- [0315 — Automatic worktree cleanup requires recorded ownership and verified absence](0315-automatic-worktree-cleanup-requires-recorded-ownership-and-verified-absence.md)
- [0316 — Instruction compilation preserves location and prepare converges refresh](0316-instruction-compilation-preserves-location-and-prepare-converges.md)
- [0317 — Gate commands and setup applicability are separate facts](0317-gate-commands-and-setup-applicability-are-separate-facts.md)
- [0318 — The Desk adapts status into one complete human decision](0318-the-desk-adapts-status-into-one-human-decision.md)
- [0319 — Current green Proof composes and red reruns stay explicit](0319-current-green-proof-composes-and-red-reruns-stay-explicit.md)
- [0320 — Setup plans own write authority and activation recovery](0320-setup-plans-own-write-authority-and-activation-recovery.md)
- [0321 — Diagram geometry follows Markdown code-block semantics](0321-diagram-geometry-follows-markdown-code-block-semantics.md)
- [0322 — Setup is one bounded operational journey](0322-setup-is-one-bounded-operational-journey.md)
- [0323 — Standards hold normalized enforcement definitions](0323-standards-hold-normalized-enforcement-definitions.md)
- [0324 — Structural guards declare Git-derived source universes](0324-structural-guards-declare-git-derived-source-universes.md)
- [0325 — The canary job hears hot tests before the full suite](0325-the-canary-job-hears-hot-tests-before-the-full-suite.md)
- [0326 — Durable replace-writes use one atomic writer](0326-durable-replace-writes-use-one-atomic-writer.md)
- [0327 — The shipped runtime module graph is a DAG](0327-shipped-runtime-module-graph-is-a-dag.md)
- [0328 — Absence and unknown observations stay distinct](0328-absence-and-unknown-observations-stay-distinct.md)
- [0329 — Runtime data earns its types at validation boundaries](0329-runtime-data-earns-types-at-validation-boundaries.md)
- [0330 — Every command path declares its operation effects](0330-every-command-path-declares-its-operation-effects.md)
- [0331 — Common-repository locks precede checkout locks](0331-common-repository-locks-precede-checkout-locks.md)
- [0332 — Worktree setup steps preserve interruption ambiguity](0332-worktree-setup-steps-preserve-interruption-ambiguity.md)
- [0333 — Proof-note replay uses stable claim identity](0333-proof-note-replay-uses-stable-claim-identity.md)
- [0334 — Result envelopes encode valid structural states](0334-result-envelopes-encode-valid-structural-states.md)
- [0335 — Operation policy enrolls faithful previews](0335-operation-policy-enrolls-faithful-previews.md)
- [0336 — Ambient process state resolves at host boundaries](0336-ambient-process-state-resolves-at-boundaries.md)
- [0337 — Vale self-provisions from tracked release integrity](0337-vale-self-provisions-from-tracked-release-integrity.md)
- [0338 — Operation policy enrolls every discern-owned Git writer in preflight](0338-operation-policy-enrolls-git-write-authority.md)
- [0339 — Proposed Standard limits require exact approval and identical measurements share one run](0339-proposed-standard-limits-and-shared-measurements.md)
- [0340 — Tests wait on conditions and enrol real delays](0340-tests-wait-on-conditions-and-enrol-real-delays.md)
- [0341 — Deliberate error discard is a named side-effect boundary](0341-deliberate-error-discard-is-a-named-side-effect-boundary.md)
- [0342 — Git elects module coverage membership and LCOV supplies observations](0342-git-elects-module-coverage-membership.md)
- [0343 — Duplication holds maximal non-overlapping normalized lines](0343-duplication-holds-maximal-non-overlapping-normalized-lines.md)
- [0344 — Process egress and termination have exact boundaries](0344-process-egress-and-termination-have-exact-boundaries.md)
- [0345 — Promise effects have typed owners](0345-promise-effects-have-typed-owners.md)
- [0346 — Machine facts are typed advisories](0346-machine-facts-are-typed-advisories.md)
- [0347 — Clock, scheduler, and jitter are explicit capabilities](0347-clock-scheduler-and-jitter-are-explicit-capabilities.md)
- [0348 — Secure entropy is a WebCrypto-backed capability](0348-secure-entropy-is-a-webcrypto-capability.md)
- [0349 — Top-level success follows completion policies](0349-top-level-success-follows-completion-policies.md)
- [0350 — Checkout identity supplies explicit test-order seeds](0350-checkout-identity-supplies-test-order-seeds.md)
- [0351 — Setup completion replays Proof and rolls back only owned tips](0351-setup-completion-replays-proof-and-rolls-back-only-owned-tips.md)
- [0352 — Desk decisions cross a pure responsive presentation boundary](0352-desk-decisions-cross-a-pure-responsive-presentation-boundary.md)
- [0353 — Desk actions are registry facts reviewed before effects](0353-desk-actions-are-registry-facts-reviewed-before-effects.md)
- [0354 — Standard proposals renew descendant evidence through target-scoped measurement](0354-standard-proposals-renew-descendant-evidence.md)
- [0355 — Real PTY tests declare operating-system boundary contracts](0355-real-pty-tests-declare-os-boundary-contracts.md)
- [0356 — Task metadata follows the worktree identity](0356-task-metadata-follows-the-worktree-identity.md)
- [0357 — Lock-boundary evidence retires superseded Logbook starts](0357-lock-boundary-evidence-retires-superseded-logbook-starts.md)
- [0358 — Recovery observes before repair and Park preserves the branch](0358-recovery-observes-before-repair-and-park-preserves-the-branch.md)
- [0359 — Worktree targets share one resolution contract](0359-worktree-targets-share-one-resolution-contract.md)
- [0360 — The Project Script namespace holds only commands](0360-the-project-script-namespace-holds-only-commands.md)
- [0361 — The Proof line is canonical CommonMark](0361-the-proof-line-is-canonical-commonmark.md)
- [0362 — Founder testimony and recorded corpora promote demand claims](0362-founder-testimony-and-recorded-corpora-promote-demand-claims.md)
- [0363 — The config template is generated from the schema and a prose registry](0363-the-config-template-is-generated-from-the-schema-and-a-prose-registry.md)
- [0364 — Public release follows a staged repository transition](0364-public-release-follows-a-staged-repository-transition.md)
- [0365 — The v1 CLI has one command model and one spelling](0365-the-v1-cli-has-one-command-model-and-one-spelling.md)
- [0366 — Landing is one exact repository transaction](0366-landing-is-one-exact-repository-transaction.md)
- [0367 — Worktree local state records intent before effects](0367-worktree-local-state-records-intent-before-effects.md)
- [0368 — Local durable formats declare forward skew](0368-local-durable-formats-declare-forward-skew.md)
- [0369 — Public claims and refusals bind to cited guards](0369-public-claims-and-refusals-bind-to-cited-guards.md)
- [0370 — The consequence canon records second-order effects above the benefit canons](0370-the-consequence-canon-records-second-order-effects.md)
- [0371 — Practice tenets carry the belief they follow from](0371-practice-tenets-carry-the-belief-they-follow-from.md)
- [0372 — V1 registries publish append-only generated manifests](0372-v1-registries-publish-append-only-manifests.md)
- [0373 — Proof alone carries product-concept capitals](0373-proof-alone-carries-product-concept-capitals.md)
- [0374 — Complete Proof is independent of measurement scheduling](0374-complete-proof-is-independent-of-measurement-scheduling.md)
- [0375 — Source authority survives declared composition](0375-source-authority-survives-declared-composition.md)
- [0379 — Emergency landings record an explicit Proof exception](0379-emergency-landings-record-an-explicit-proof-exception.md)
- [0381 — Stage complete completion in place before publication](0381-stage-complete-completion-in-place-before-publication.md)
- [0383 — Test shell waits require observable transitions](0383-test-shell-waits-require-observable-transitions.md)
- [0384 — Evaluate lazy modules outside invocation context](0384-evaluate-lazy-modules-outside-invocation-context.md)
- [0385 — Retain Git discovery within one operation](0385-retain-git-discovery-within-one-operation.md)
- [0388 — Rank priority partitions by committed duration hints](0388-rank-priority-partitions-by-committed-duration-hints.md)
- [0389 — The workspace contract — a checkout changes only under its own operation](0389-the-workspace-contract.md)
- [0390 — Public contracts preserve behavior and independent format versions](0390-public-contracts-preserve-behavior-and-independent-format-versions.md)
- [0391 — Landings compose a moved trunk in an integration worktree](0391-landings-compose-a-moved-trunk-in-an-integration-worktree.md)
- [0392 — Readiness connects questions to the practice](0392-readiness-connects-questions-to-the-practice.md)
- [0393 — Merge observations connect conflict recurrence across surfaces](0393-merge-observations-connect-conflict-recurrence-across-surfaces.md)
- [0394 — Separate operation ownership from publication](0394-separate-operation-ownership-from-publication.md)
- [0395 — Integration judgments continue the retained landing](0395-integration-judgments-continue-the-retained-landing.md)
- [0397 — Terminal applications and test transports stay package-owned](0397-terminal-applications-and-test-transports-stay-package-owned.md)
- [0398 — The Desk is a live human control panel](0398-the-desk-is-a-live-human-control-panel.md)
- [0399 — Acceptance can queue a proven revision without starting landing](0399-acceptance-can-queue-without-starting-landing.md)
- [0400 — Release records drive offline release awareness](0400-release-records-drive-offline-release-awareness.md)
- [0401 — Managed adoption keeps currency and Proof separate](0401-managed-adoption-keeps-currency-and-proof-separate.md)
- [0402 — Site layouts use server-rendered React components](0402-site-layouts-use-server-rendered-react-components.md)
- [0403 — The site map is a directory of repository sources](0403-the-site-map-is-a-directory-of-repository-sources.md)
- [0404 — Maps explain the project and connect its practice](0404-maps-explain-the-project-and-connect-its-practice.md)
- [0405 — One Standards MCP tool and atomic proposal batches](0405-one-standards-mcp-tool-and-atomic-proposal-batches.md)
- [0406 — Completion claims use renewable bounded leases](0406-completion-claims-use-renewable-bounded-leases.md)
- [0407 — The gate strips the desk marker](0407-the-gate-strips-the-desk-marker.md)
- [0408 — Project code holds no exclusion boundary](0408-project-code-holds-no-exclusion-boundary.md)
- [0409 — Public contracts split durable enforcement from session judgment](0409-public-contracts-split-durable-enforcement-from-session-judgment.md)
- [0410 — The public contract programme closes before the first tag](0410-the-public-contract-programme-closes-before-the-first-tag.md)
- [0411 — Validation input identity streams complete bytes](0411-validation-input-identity-streams-complete-bytes.md)

<!-- END GENERATED: current ADR records -->

## Superseded records

These records remain under [`_superseded/`](_superseded/) because the path to the current design is part of the history. Each opens with a banner naming its successor — or stating that it retired without one — and the directory marks it as superseded on the public decisions pages.

<!-- BEGIN GENERATED: superseded ADR records -->
<!-- Generated by `discern refresh` from the ADR headings on disk. -->

- [0001 — Project-owned recipes live in an unmanaged `.discern/recipes/`](_superseded/0001-project-owned-recipes.md)
- [0002 — Side-gates run with the slot phase model; path-scoped suppression deferred](_superseded/0002-first-class-side-gates.md)
- [0004 — `agent finish --json` — structured gate output](_superseded/0004-structured-finish-json.md)
- [0007 — The adapter contract — a file overlay plus config fills](_superseded/0007-adapter-contract.md)
- [0008 — The managed-set is declared in `managed.json`, not hardcoded](_superseded/0008-declarative-managed-set.md)
- [0010 — Self-host the harness — install discern into its own repo](_superseded/0010-self-host-the-harness.md)
- [0012 — Run the engine under `set -f` (noglob) by default](_superseded/0012-engine-noglob-default.md)
- [0013 — User-facing output speaks the product's command vocabulary](_superseded/0013-product-vocabulary-in-user-output.md)
- [0015 — `discern map` — an in-binary project-map browser with a hand-rolled terminal Markdown renderer](_superseded/0015-map-browser.md)
- [0016 — Consolidate the install surface under `.discern/`](_superseded/0016-consolidate-install-surface.md)
- [0024 — Setup is a command, not a skill](_superseded/0024-setup-command-not-skill.md)
- [0030 — `--json` is quiet — the envelope is the entire machine output](_superseded/0030-quiet-json-output.md)
- [0032 — The Claude Code mirror imports AGENTS.md instead of duplicating it](_superseded/0032-claude-md-imports-agents-md.md)
- [0042 — Per-agent skills materialization](_superseded/0042-per-agent-skills-materialization.md)
- [0046 — A configurable graduation destination, and removing the handoff-worktree skill](_superseded/0046-graduate-destination-and-skill-removal.md)
- [0048 — Rename the graduation landing-role `main` → `trunk`](_superseded/0048-graduate-trunk-role-name.md)
- [0056 — Run the generated-artifact currency checks as fail-fast preconditions too](_superseded/0056-currency-checks-fail-fast.md)
- [0061 — Graduate enforces the fix stage's fixed point before landing](_superseded/0061-graduate-fix-stage-fixed-point.md)
- [0066 — `discern --help` groups commands by post-processing Cliffy's help](_superseded/0066-grouped-cli-help.md)
- [0091 — Rescue generated content before overwrite](_superseded/0091-rescue-generated-content-before-overwrite.md)
- [0107 — `upgrade` reconciles the record-table doc banners](_superseded/0107-config-banners-are-managed-regions.md)
- [0118 — Preset config fills never overwrite a present value](_superseded/0118-preset-fills-never-overwrite.md)
- [0185 — done refuses an unchanged-tree rerun without --confirmed](_superseded/0185-done-refuses-an-unchanged-tree-rerun-without-confirmed.md)
- [0227 — `await` bounds follow repository evidence](_superseded/0227-await-bounds-follow-repository-evidence.md)
- [0376 — Active commands advance an authorized landing queue](_superseded/0376-active-commands-advance-an-authorized-landing-queue.md)
- [0377 — Execution environments declare reuse and recovery](_superseded/0377-execution-environments-declare-reuse-and-recovery.md)
- [0378 — Landing completion survives checkout retirement](_superseded/0378-landing-completion-survives-checkout-retirement.md)
- [0380 — Bind validation demand after composition within one execution lease](_superseded/0380-bind-validation-demand-after-composition.md)
- [0382 — Release checkout semantics independently of recovery bytes](_superseded/0382-release-checkout-semantics-independently-of-recovery-bytes.md)
- [0386 — Retain recovery bytes through durable reference graphs](_superseded/0386-retain-recovery-bytes-through-durable-reference-graphs.md)
- [0387 — Flush recovery authority independently of process observations](_superseded/0387-flush-recovery-authority-not-process-observations.md)

<!-- END GENERATED: superseded ADR records -->

## For contributors

discern ships the ADR discipline through the bundled `discern-write-adr` skill, which creates `map/_adr/` from [`templates/skills/discern-write-adr/skeleton/map/_adr/`](../../../templates/skills/discern-write-adr/skeleton/map/_adr/). The [canonical format](../../../templates/skills/discern-write-adr/skeleton/map/_adr/README.md) and [copyable template](../../../templates/skills/discern-write-adr/skeleton/map/_adr/0000-template.md) are the authoring contract.

Number records continuously as `NNNN-slug.md`. The first real record is `0001`. State the decision in the title, and write a record only for a choice that is hard to reverse, surprising without context, and a real trade-off. Move a reversed or fully absorbed record into `_superseded/` and add a banner naming its successor. Never reuse a number.

Amendments follow [ADR 0310](0310-amendment-notes-consolidate-and-read-timelessly.md): a record keeps **one** leading amendment block — a single blockquote with one entry per amending decision — never a stack of banners. Write each entry to stay true as the system moves: state the direction of the change and name the live authority (config, registry, lockfile) for any current value; a note that restates a count or a version goes false with the next change. Record a supersession on **both** records in the same change — the gate checks the mechanical half.
