Skip to content

Project decisions

The numbered records preserve the context and trade-offs behind discern's architecture.

Current records

  1. ADR 0003: Named metric standards, with an explicit metric-emission convention
  2. ADR 0005: Declarative config — a comment-preserving editor, discern config, and setup --config
  3. ADR 0006: Opt-in streamed output and fail-fast cancellation for the parallel runner
  4. ADR 0009: 1.0 — drop backward compatibility, with a one-shot upgrade
  5. ADR 0011: Adopt the isolated-worktree workflow for discern's own development
  6. ADR 0014: A versioned, reversible migration system for upgrades
  7. ADR 0017: Declare capabilities, derive the gate — retire slots + phases
  8. ADR 0018: Consolidate discern vocabulary into four layers
  9. ADR 0019: Collapse into one binary with a TypeScript-native engine
  10. ADR 0020: Dissolve .discern/ — one root config file, config-driven point-and-override, feature toggles
  11. ADR 0021: Migrations insert a new section's documented block at its canonical position
  12. ADR 0022: Rename the harness to discern
  13. ADR 0023: Rename and promote the workflow commands
  14. ADR 0025: Generalize the worktree db/dev-server adapters into per-worktree resources with orphan GC
  15. ADR 0026: One typed (Zod) config schema as the single source of truth
  16. ADR 0027: Plan/apply as the engine's execution model
  17. ADR 0028: One result envelope per verb, with normalized failure diagnostics
  18. ADR 0029: A best-practices audit that splits deterministic from subjective rules
  19. ADR 0031: One typed provider registry for every agent-specific integration
  20. ADR 0033: status — a read-only orientation verb with a location-aware default
  21. ADR 0034: AGENTS.md is an untracked build artifact, guarded by a currency check
  22. ADR 0035: A strict, config-only template engine for the built-in guidance
  23. ADR 0036: Unify setup under one zero-config discern setup
  24. ADR 0037: Setup-incompleteness is an observable state, not a prose handoff
  25. ADR 0038: The MCP server runs on the official TypeScript SDK over stdio
  26. ADR 0039: discern ships its own docs to every install via discern help
  27. ADR 0040: The worktree hooks parse their payload in the binary (no jq)
  28. ADR 0041: A self-describing MCP surface built on typed result schemas
  29. ADR 0043: The provider registry is the enforced single source for every agent surface
  30. ADR 0044: Setup involves the user and proceeds — it does not gate every step
  31. ADR 0045: The MCP server is core infrastructure, not a feature toggle
  32. ADR 0047: done blocks a fix stage that strands uncommitted changes
  33. ADR 0049: Ship the fix-the-class discipline as built-in guidance and a bundled skill
  34. ADR 0050: Run the merge check first, as a fail-fast precondition
  35. ADR 0051: Every internal canonical set is tied to its satellites by a forcing function
  36. ADR 0052: Worktrees live in a configurable sibling directory, not nested .claude/worktrees
  37. ADR 0053: A gate guard keeps comments in the present tense, not narrating the codebase's past
  38. ADR 0054: One module owns process spawning — git and sh -c funnel through shared runners
  39. ADR 0055: discern update — the third verb in the worktree lifecycle, bundling merge with re-materialize
  40. ADR 0057: Hold a rate, not a raw count (per)
  41. ADR 0058: discern start — spawn a worktree from the main checkout, and a status guardrail that points at it
  42. ADR 0059: [worktree.setup].ensure — a convergent setup bucket that re-runs every pass
  43. ADR 0060: Worktree shell commands adopt the gate's capture-on-failure output convention
  44. ADR 0062: The MCP server tracks its own working root, and retires location-based tool visibility
  45. ADR 0063: discern doctor prints the execution model — facts, not judgments
  46. ADR 0064: update reports what changed beneath the branch
  47. ADR 0065: discern setup keeps its promises
  48. ADR 0067: Accept validates the exact tree it lands, fast-pathed by a gate receipt
  49. ADR 0068: Tests inject env/cwd seams so the suite can run --parallel
  50. ADR 0069: Setup proposes installed providers once and commits the selection
  51. ADR 0070: An agent that reads the canonical AGENTS.md is modelled as "reuse-canonical"
  52. ADR 0071: The settings seed/merge seam is provider-driven, not a Claude special-case
  53. ADR 0072: A provider's MCP wiring is a typed status, accounted by a forcing function
  54. ADR 0073: discern co-manages Codex's auto-generated environment.toml, and reuses the cwd-based teardown verb for its cleanup
  55. ADR 0074: Claude Code and GitHub Copilot co-own the shared .mcp.json, through one stdio writer
  56. ADR 0075: discern setup is a staged, consent-driven handshake
  57. ADR 0076: The engine commits discern machinery it scaffolds
  58. ADR 0077: The setup agent is the configuration engine — transparency over interrogation
  59. ADR 0078: setup steps are stateless machine-readable pages with derived per-step proof
  60. ADR 0079: improvement is a coach, not an audit
  61. ADR 0080: The agent map has one configured root
  62. ADR 0081: discern setup accept, a main-checkout landing command for the finished setup
  63. ADR 0082: Codex project config grants the discern worktree root and narrow Git rules
  64. ADR 0083: Captured diagnostic output is normalized and offloaded when truncated
  65. ADR 0084: Co-change coupling detection is a non-blocking advisory, recomputed on demand
  66. ADR 0085: Migrations validate before schema stamping and refuse newer configs
  67. ADR 0086: setup serves ready-to-relay messages and gates a fresh scaffold on a --confirmed attestation
  68. ADR 0087: Prefix the bundled skills with discern- and expand the set to nine
  69. ADR 0088: the fresh setup welcome decorates only on TTY
  70. ADR 0089: Machine-local provider settings stay ignored
  71. ADR 0090: setup proves the project runs in a worktree, and smoke joins the known capabilities
  72. ADR 0092: upgrade reconciles the fixed discern.toml scaffold
  73. ADR 0093: upgrade reconciles the discern .gitignore block
  74. ADR 0094: Final lifecycle checks require clean trees
  75. ADR 0095: Standardize the prelaunch CLI vocabulary
  76. ADR 0096: Passing jobs keep output artifacts
  77. ADR 0097: Publish generated JSON result contracts
  78. ADR 0098: Accept refreshes the landing checkout
  79. ADR 0099: Consolidate the authored surface under a visible discern/ namespace
  80. ADR 0100: The documentation tree is the agent-maintained map, not the project's own docs
  81. ADR 0101: Retire the [features] toggles
  82. ADR 0102: One paths registry, rendered artifacts, and leakage guards
  83. ADR 0103: Setup grounds itself in the repo's real state — detected default branch, git-init-first without git, a welcome everywhere
  84. ADR 0104: discern uninstall is the exit-honesty verb — registry-derived removal, CLI-only
  85. ADR 0105: Interruption reaches the gate's detached job groups
  86. ADR 0106: standards --pin captures a measured gain and carries the gate receipt across it
  87. ADR 0108: One global timeout bounds every gate job
  88. ADR 0109: discern start accepts an optional name, normalised to a branch-safe slug
  89. ADR 0110: The landing model — pull from any ref, land only on the trunk
  90. ADR 0111: The MCP surface refuses undeclared arguments, and discern_start takes a cross-project path
  91. ADR 0112: a measurement receipt lets check → pin measure once
  92. ADR 0113: installing a new dependency is a consent point in setup
  93. ADR 0114: a green gate emits the receipt
  94. ADR 0115: under a nested project root, every verb works correctly or refuses loudly
  95. ADR 0116: Receipts vouch only for the pinned tree, and accept lands the validated sha
  96. ADR 0117: Temp output artifacts are reaped by age, from one registry
  97. ADR 0119: bare discern opens the operator's desk
  98. ADR 0120: The launch verb canon — questions are nouns, actions are imperatives
  99. ADR 0125: An explicit [project] agents = [] means no providers
  100. ADR 0126: Internal ADR citations never ship
  101. ADR 0127: Map freshness ships file-linked facts, not verdicts
  102. ADR 0128: The ignore block enumerates ownership; compiled guidance is tracked
  103. ADR 0129: The public site lives in-repo behind one fetch handler
  104. ADR 0130: The docs site renders the help tree through the shared discovery module
  105. ADR 0131: Setup never offers to adopt existing docs — and "docs tree" retires with it
  106. ADR 0133: Standards join the gate — verified always, measured by default
  107. ADR 0134: Landing attests consent — accept requires a --confirmed attestation
  108. ADR 0135: Site pages use build-time React and a static runtime
  109. ADR 0136: Third-party notices derive from the compile graph
  110. ADR 0137: Project Scripts live under the script command
  111. ADR 0138: All ruled config banners are managed regions
  112. ADR 0139: The design system is an independently versioned package
  113. ADR 0140: Frontmatter is a gate-validated schema and publish: false is the sole page-level withhold
  114. ADR 0141: ADR citations take one strippable form and strip at render time
  115. ADR 0142: Customer binaries carry only the public documentation projection
  116. ADR 0143: Decision records render on the web as project history outside product guidance
  117. ADR 0144: Site URLs are canonical at the apex and redirects resolve in one hop
  118. ADR 0145: The production site deploys only from release tags
  119. ADR 0146: The gate validates the map's substance, and the CLI reference is generated
  120. ADR 0147: Ignored-file drift uses bounded hybrid fingerprints
  121. ADR 0148: Strand detection covers every gate stage
  122. ADR 0149: The project mark is the Unicode glyph ◮
  123. ADR 0150: Markdown prose is stored unwrapped
  124. ADR 0151: The desk starts tasks and opens agents
  125. ADR 0152: Slow workflows prove predictable write authority before project work
  126. ADR 0153: [repository] owns shared checkout policy and convergence
  127. ADR 0154: Launch standards recalibrate to the public corpus at programme end
  128. ADR 0155: Standalone standards share the gate job pipeline
  129. ADR 0156: The permanent landing page and the /install endpoint
  130. ADR 0157: The desk owns its launched child sessions
  131. ADR 0158: One standard YAML parser for all frontmatter
  132. ADR 0159: Inherited-terminal children have one owned lifecycle
  133. ADR 0160: A local logbook of discern's own use, on by default, with advisory-only readers
  134. ADR 0161: Standards hold growth-proof numbers, and a breach from the work itself escalates
  135. ADR 0162: The logbook records its full vocabulary from day one, as evidence rather than inference
  136. ADR 0163: The patterns family houses its reset as a CLI-only imperative subcommand
  137. ADR 0164: The glossary compiles from a term registry
  138. ADR 0165: Git-admin state shares one namespace without changing its lifetime
  139. ADR 0166: Coding-agent identity is advisory logbook evidence from one catalogue
  140. ADR 0167: The term registry polices the vocabulary
  141. ADR 0168: The gate declares jobs
  142. ADR 0169: The launch glossary canon
  143. ADR 0170: File ownership is required registry data
  144. ADR 0171: Glossary display and matching are separate registry data
  145. ADR 0172: Hints compile from a hint registry, and the envelope owns all advisory prose
  146. ADR 0173: Trim the bundled skills to seven, and split delivery between skills and hints
  147. ADR 0174: Agent document discovery is regions, search, then canonical targets
  148. ADR 0175: The feature canon compiles from a feature registry
  149. ADR 0176: The closed sets are a closed set
  150. ADR 0177: The compiled agent file opens as the project's own document
  151. ADR 0178: discern tidy is the embedded convention for discern-owned surfaces
  152. ADR 0179: The feature canon carries an agent-experience axis
  153. ADR 0180: Every spawn surface declares its interrupt contract
  154. ADR 0181: An SSOT claim must anchor a declared canonical set
  155. ADR 0182: Operator commands resolve discern to the running engine
  156. ADR 0183: Agent task search uses an audience-specific ranker
  157. ADR 0184: Markdown writers preserve or refuse frontmatter, never restructure it
  158. ADR 0186: ADR number uniqueness is gate-enforced, with an in-flight collision scan
  159. ADR 0187: tidy checks diagram geometry in the Markdown it formats
  160. ADR 0188: The receipt relays as one line; the page is pulled
  161. ADR 0189: A matched gotchas trap inlines into the gate failure
  162. ADR 0190: Cohort findings lift the provider-comparison deferral, under standing conditions
  163. ADR 0191: An eighth bundled skill teaches the write-once discipline
  164. ADR 0192: static guidance earns delivery by the routing test
  165. ADR 0193: discern does not enforce at the vendor security boundary
  166. ADR 0194: Standing pre-authorization is a recorded, machine-checked grant — [acceptance], covered landings, and the desk's effort grant
  167. ADR 0195: Fresh maps and neutral scopes stay inside discern-owned paths
  168. ADR 0196: Coupling advice runs with the gate by default
  169. ADR 0197: Every standard declares its direction
  170. ADR 0198: Worktree port export is opt-in
  171. ADR 0199: macOS release binaries are Developer ID signed and notarized
  172. ADR 0200: The ADR index is a refresh-maintained artifact, opted into by markers
  173. ADR 0201: Artifact validators ship or record their exemption
  174. ADR 0202: The gate ships the map-integrity preflight, scoped to domain-neutral rules
  175. ADR 0203: Discern co-authors only commits it composes
  176. ADR 0205: Browser Workflow semantics are explicit Markdown projections
  177. ADR 0206: Patterns finding tone is presentation only
  178. ADR 0207: Hint follow-through is declared and episode-based
  179. ADR 0208: Public contracts version by schema major
  180. ADR 0209: Fresh seed grants cover pure documentation
  181. ADR 0210: Effectful verb starts are paired logbook events
  182. ADR 0211: Agent-context artifacts carry no provenance marker
  183. ADR 0212: The fleet test-run cap is N OS-file-lock slots under the git common dir
  184. ADR 0213: await blocks on authoritative fleet conditions, with the logbook as wake signal only
  185. ADR 0214: MCP instructions render operating policies; guidance remains authored
  186. ADR 0215: Landing receipts travel as bot-authored Git notes with fetch-only opt-in transport
  187. ADR 0216: Temp retention is repository-throttled and inspection-bounded
  188. ADR 0217: Envelope command references render per delivery surface
  189. ADR 0218: docs owns the manual; help owns CLI reference
  190. ADR 0219: The public install schema starts at 1
  191. ADR 0220: Self-supplied commands count for nothing in setup assurance
  192. ADR 0221: Depth-indent discern.toml as the canonical tidy convention
  193. ADR 0222: The frozen contract surface completes the vocabulary canon before the first tag
  194. ADR 0223: Conversation consent survives an unreadable committed landing policy
  195. ADR 0224: Trend comparability is setup equality, and analysis skips setup-era events
  196. ADR 0225: Contained-worktree reclaim is offer-only and keeps the branch ref
  197. ADR 0226: Setup separates installation evidence from terminal launchers
  198. ADR 0228: The feature canon carries a plain-language register
  199. ADR 0229: Practice stats are counted, local, and never comparative
  200. ADR 0231: Prose density shares one versioned corpus
  201. ADR 0232: await continuations spend the transport budget
  202. ADR 0233: JUnit XML joins diagnostic auto-detection
  203. ADR 0234: Tips are the desk's human advisory channel
  204. ADR 0235: Plain renderings live on the glossary entry
  205. ADR 0236: Tip adoption clears evidence per tip across comparable setups
  206. ADR 0237: discern ships under the Functional Source License with an Apache-2.0 future license
  207. ADR 0238: Contributions are covered by a contributor license agreement
  208. ADR 0240: Discern-authored project payloads use Apache-2.0
  209. ADR 0242: Durable receipts use a versioned DSSE-compatible envelope
  210. ADR 0243: Await continuations use short repository-local handles
  211. ADR 0244: The brand addresses the owner and judges only the work
  212. ADR 0245: The receipt becomes the proof
  213. ADR 0246: discern map --export reads a configured scope as an ordered reading list
  214. ADR 0247: Declared generated artifacts regenerate; they are never merged textually
  215. ADR 0248: Crashes leave a report and a distinct exit code
  216. ADR 0249: Self-shims cache per engine identity; sweep pages stay budget-bounded
  217. ADR 0250: Discern-managed human output declares semantic groups
  218. ADR 0251: Every authored Deno function declaration carries JSDoc
  219. ADR 0252: The fleet test-run cap is enforced at the test command boundary
  220. ADR 0253: Durable proofs project runtime receipts
  221. ADR 0254: MCP startup loading remains an environment-only experiment
  222. ADR 0255: Status is a measured responsive dashboard over one result model
  223. ADR 0256: The patterns report keeps each detector's strongest findings
  224. ADR 0257: The cross-agent reference compiles from a canonical registry
  225. ADR 0258: Every DISCERN_* environment contract has one membership authority
  226. ADR 0259: Generated groups opt in to review metadata; registered Markdown uses heading-aware diffs
  227. ADR 0260: The integration coverage compiles from the provider registry
  228. ADR 0261: The prepare inner loop runs the [generated] regenerations
  229. ADR 0262: Receipt-eligible runs stop at the pre-group strand checkpoint
  230. ADR 0263: A ninth bundled skill routes wait-shaped asks to await
  231. ADR 0264: Tracked refresh convergence precedes landing
  232. ADR 0265: Removed worktree paths authorize bounded reappearance cleanup
  233. ADR 0266: Public failure recovery is classified by error family
  234. ADR 0267: Operational contracts stay outside agent copy
  235. ADR 0268: The benefit canon transposes the feature registry
  236. ADR 0270: The benefit canon separates commercial value from claim qualification
  237. ADR 0271: Destructive drops retain bounded recovery refs
  238. ADR 0272: Logbook lifecycle actions require terminal confirmation, and archives remain readable
  239. ADR 0273: Validation comparisons require complete keyed semantic evidence
  240. ADR 0274: Validation findings separate matched and cross-context divergence
  241. ADR 0275: Validation workflows use stream-bounded change cycles
  242. ADR 0276: Patterns recommendations require project-local decision evidence
  243. ADR 0277: Patterns investigations preserve source findings
  244. ADR 0278: WSL support is proven by a hosted WSL 2 gate lane that publication requires
  245. ADR 0279: External terminal rendering crosses one Discern-owned process boundary
  246. ADR 0280: Results pair one structured contract with authored Markdown
  247. ADR 0281: Main fleet status is a decision brief
  248. ADR 0282: Self-invocations carry recorded provenance
  249. ADR 0283: Seed the adoption record in the shipped skeletons
  250. ADR 0284: The practice canon enumerates the tenets
  251. ADR 0285: Agent instructions replace Guidance throughout the live product
  252. ADR 0286: Configured source paths expose registry-derived live references
  253. ADR 0287: Terminal Markdown delegates to the design system
  254. ADR 0288: Canon Editor edits the canon through its projections
  255. ADR 0289: Production binaries embed only product-reachable npm packages
  256. ADR 0290: Discern owns the default interactive Markdown reading loop
  257. ADR 0291: The await call cap is an environment-only valued experiment
  258. ADR 0292: The demand canon counters the benefit canon
  259. ADR 0293: Checkpoint declarations interlock the gate through open questions and relevance-sensitive subjects
  260. ADR 0294: The merge-base governs checkpoint policy
  261. ADR 0295: One question vocabulary serves the improvement and checkpoint memberships
  262. ADR 0296: when delegates trigger conditions to the project under an explicit v1 execution boundary
  263. ADR 0297: Checkpoint modes are the closed stop/advise pair
  264. ADR 0298: Declaration evidence binds Proof currency and variance authorization
  265. ADR 0299: Checkpoint read surfaces mirror the gate without effects
  266. ADR 0300: Checkpoint observation is drained metadata, never a verdict
  267. ADR 0301: The improvement coach closes the checkpoint loop
  268. ADR 0302: Configured scalar docs join the live path-reference vocabulary
  269. ADR 0303: The shipped checkpoint set has four stops and six advisories
  270. ADR 0304: A tenth bundled skill places the checkpoint
  271. ADR 0305: The Boundary Canon owns discern's noes
  272. ADR 0306: Status defaults to a bounded orientation projection
  273. ADR 0307: CI reports checkpoint review and Proof retains drops
  274. ADR 0308: Checkpoint triggers use bounded facts and a versioned command input
  275. ADR 0309: Repository question files are governed content
  276. ADR 0310: Amendment notes consolidate into one timeless block, and supersession hygiene is gate-enforced
  277. ADR 0311: Agent benefits compile as their own transposition
  278. ADR 0312: worktrees opens a cwd-equivalent child shell
  279. ADR 0313: Setup completion and acceptance bind one final Proof
  280. ADR 0314: The public manual and project Map are separate corpora on one document engine
  281. ADR 0315: Automatic worktree cleanup requires recorded ownership and verified absence
  282. ADR 0316: Instruction compilation preserves location and prepare converges refresh
  283. ADR 0317: Gate commands and setup applicability are separate facts
  284. ADR 0318: The Desk adapts status into one complete human decision
  285. ADR 0319: Current green Proof composes and red reruns stay explicit
  286. ADR 0320: Setup plans own write authority and activation recovery
  287. ADR 0321: Diagram geometry follows Markdown code-block semantics
  288. ADR 0322: Setup is one bounded operational journey
  289. ADR 0323: Standards hold normalized enforcement definitions
  290. ADR 0324: Structural guards declare Git-derived source universes
  291. ADR 0325: The canary job hears hot tests before the full suite
  292. ADR 0326: Durable replace-writes use one atomic writer
  293. ADR 0327: The shipped runtime module graph is a DAG
  294. ADR 0328: Absence and unknown observations stay distinct
  295. ADR 0329: Runtime data earns its types at validation boundaries
  296. ADR 0330: Every command path declares its operation effects
  297. ADR 0331: Common-repository locks precede checkout locks
  298. ADR 0332: Worktree setup steps preserve interruption ambiguity
  299. ADR 0333: Proof-note replay uses stable claim identity
  300. ADR 0334: Result envelopes encode valid structural states
  301. ADR 0335: Operation policy enrolls faithful previews
  302. ADR 0336: Ambient process state resolves at host boundaries
  303. ADR 0337: Vale self-provisions from tracked release integrity
  304. ADR 0338: Operation policy enrolls every discern-owned Git writer in preflight
  305. ADR 0339: Proposed Standard limits require exact approval and identical measurements share one run
  306. ADR 0340: Tests wait on conditions and enrol real delays
  307. ADR 0341: Deliberate error discard is a named side-effect boundary
  308. ADR 0342: Git elects module coverage membership and LCOV supplies observations
  309. ADR 0343: Duplication holds maximal non-overlapping normalized lines
  310. ADR 0344: Process egress and termination have exact boundaries
  311. ADR 0345: Promise effects have typed owners
  312. ADR 0346: Machine facts are typed advisories
  313. ADR 0347: Clock, scheduler, and jitter are explicit capabilities
  314. ADR 0348: Secure entropy is a WebCrypto-backed capability
  315. ADR 0349: Top-level success follows completion policies
  316. ADR 0350: Checkout identity supplies explicit test-order seeds
  317. ADR 0351: Setup completion replays Proof and rolls back only owned tips
  318. ADR 0352: Desk decisions cross a pure responsive presentation boundary
  319. ADR 0353: Desk actions are registry facts reviewed before effects
  320. ADR 0354: Standard proposals renew descendant evidence through target-scoped measurement
  321. ADR 0355: Real PTY tests declare operating-system boundary contracts
  322. ADR 0356: Task metadata follows the worktree identity
  323. ADR 0357: Lock-boundary evidence retires superseded Logbook starts
  324. ADR 0358: Recovery observes before repair and Park preserves the branch
  325. ADR 0359: Worktree targets share one resolution contract
  326. ADR 0360: The Project Script namespace holds only commands
  327. ADR 0361: The Proof line is canonical CommonMark
  328. ADR 0362: Founder testimony and recorded corpora promote demand claims
  329. ADR 0363: The config template is generated from the schema and a prose registry
  330. ADR 0364: Public release follows a staged repository transition
  331. ADR 0365: The v1 CLI has one command model and one spelling
  332. ADR 0366: Landing is one exact repository transaction
  333. ADR 0367: Worktree local state records intent before effects
  334. ADR 0368: Local durable formats declare forward skew
  335. ADR 0369: Public claims and refusals bind to cited guards
  336. ADR 0370: The consequence canon records second-order effects above the benefit canons
  337. ADR 0371: Practice tenets carry the belief they follow from
  338. ADR 0372: V1 registries publish append-only generated manifests
  339. ADR 0373: Proof alone carries product-concept capitals
  340. ADR 0374: Complete Proof is independent of measurement scheduling
  341. ADR 0375: Source authority survives declared composition
  342. ADR 0379: Emergency landings record an explicit Proof exception
  343. ADR 0381: Stage complete completion in place before publication
  344. ADR 0383: Test shell waits require observable transitions
  345. ADR 0384: Evaluate lazy modules outside invocation context
  346. ADR 0385: Retain Git discovery within one operation
  347. ADR 0388: Rank priority partitions by committed duration hints
  348. ADR 0389: The workspace contract — a checkout changes only under its own operation
  349. ADR 0390: Public contracts preserve behavior and independent format versions
  350. ADR 0391: Landings compose a moved trunk in an integration worktree
  351. ADR 0392: Readiness connects questions to the practice
  352. ADR 0393: Merge observations connect conflict recurrence across surfaces
  353. ADR 0394: Separate operation ownership from publication
  354. ADR 0395: Integration judgments continue the retained landing
  355. ADR 0397: Terminal applications and test transports stay package-owned
  356. ADR 0398: The Desk is a live human control panel
  357. ADR 0399: Acceptance can queue a proven revision without starting landing
  358. ADR 0400: Release records drive offline release awareness
  359. ADR 0401: Managed adoption keeps currency and Proof separate
  360. ADR 0402: Site layouts use server-rendered React components
  361. ADR 0403: The site map is a directory of repository sources
  362. ADR 0404: Maps explain the project and connect its practice
  363. ADR 0405: One Standards MCP tool and atomic proposal batches
  364. ADR 0406: Completion claims use renewable bounded leases
  365. ADR 0407: The gate strips the desk marker
  366. ADR 0408: Project code holds no exclusion boundary
  367. ADR 0409: Public contracts split durable enforcement from session judgment
  368. ADR 0410: The public contract programme closes before the first tag
  369. 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.

  1. ADR 0001: Project-owned recipes live in an unmanaged .discern/recipes/Superseded
  2. ADR 0002: Side-gates run with the slot phase model; path-scoped suppression deferredSuperseded
  3. ADR 0004: agent finish --json — structured gate outputSuperseded
  4. ADR 0007: The adapter contract — a file overlay plus config fillsSuperseded
  5. ADR 0008: The managed-set is declared in managed.json, not hardcodedSuperseded
  6. ADR 0010: Self-host the harness — install discern into its own repoSuperseded
  7. ADR 0012: Run the engine under set -f (noglob) by defaultSuperseded
  8. ADR 0013: User-facing output speaks the product's command vocabularySuperseded
  9. ADR 0015: discern map — an in-binary project-map browser with a hand-rolled terminal Markdown rendererSuperseded
  10. ADR 0016: Consolidate the install surface under .discern/Superseded
  11. ADR 0024: Setup is a command, not a skillSuperseded
  12. ADR 0030: --json is quiet — the envelope is the entire machine outputSuperseded
  13. ADR 0032: The Claude Code mirror imports AGENTS.md instead of duplicating itSuperseded
  14. ADR 0042: Per-agent skills materializationSuperseded
  15. ADR 0046: A configurable graduation destination, and removing the handoff-worktree skillSuperseded
  16. ADR 0048: Rename the graduation landing-role main → trunkSuperseded
  17. ADR 0056: Run the generated-artifact currency checks as fail-fast preconditions tooSuperseded
  18. ADR 0061: Graduate enforces the fix stage's fixed point before landingSuperseded
  19. ADR 0066: discern --help groups commands by post-processing Cliffy's helpSuperseded
  20. ADR 0091: Rescue generated content before overwriteSuperseded
  21. ADR 0107: upgrade reconciles the record-table doc bannersSuperseded
  22. ADR 0118: Preset config fills never overwrite a present valueSuperseded
  23. ADR 0185: done refuses an unchanged-tree rerun without --confirmedSuperseded
  24. ADR 0227: await bounds follow repository evidenceSuperseded
  25. ADR 0376: Active commands advance an authorized landing queueSuperseded
  26. ADR 0377: Execution environments declare reuse and recoverySuperseded
  27. ADR 0378: Landing completion survives checkout retirementSuperseded
  28. ADR 0380: Bind validation demand after composition within one execution leaseSuperseded
  29. ADR 0382: Release checkout semantics independently of recovery bytesSuperseded
  30. ADR 0386: Retain recovery bytes through durable reference graphsSuperseded
  31. ADR 0387: Flush recovery authority independently of process observationsSuperseded
choose openEsc close