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