dowel

Architecture Decision Records

Decisions made along the way, recorded together with their rationale. To overturn a decision, mark its ADR as Superseded and add a new one; existing ADRs are never rewritten. Each record is kept in the language it was originally written in.

ADR Decision Status
0001 Own the toolchain, delegate dependency supply Accepted
0002 No resident daemon Accepted
0003 Split the manifest into dowel.toml and dowel.build Accepted
0004 The syntax is a TOML-style dialect; borrow elements whose semantics match existing languages Accepted
0005 Migration is dynamic extraction only; no static translation Accepted
0006 Use dowel as a provisional name Superseded by 0014
0007 Implement in Rust; the core uses the standard library only Accepted
0008 Runner transfer paths are positional; no string interpolation Accepted
0009 FileId is the hash of the normalized path Accepted
0010 check runs through the planning stage Accepted
0011 Derived fingerprints exclude spans; provenance reads bypass the memo Accepted
0012 The store holds evaluation results only; files with diagnostics are not stored Accepted
0013 dowel acquires itself via a separate binary; references are pinned to commit shas Accepted
0014 Adopt dowel as the official name Accepted
0015 Resolve version dependencies through pkg-config, record them in dowel.lock Accepted
0016 The language standard is a typed property merged by maximum Accepted
0017 Features belong to the package that declares them; dep/feature forwards Accepted
0018 The output stage is a backend layer over one neutral build graph Accepted
0019 abi = "c" names a boundary, not a language Accepted
0020 pkg.name / pkg.version are package constants, readable in value position Accepted
0021 Features stay additive; exclusivity is declared, never inferred Accepted
0022 A test target registers cases; dowel imposes no harness Accepted
0023 The harness protocol is declared; dowel learns no test framework Accepted
0024 dowel debug starts a declared debugger; the stub is declared, not guessed Accepted
0025 bench measures whole-process wall-clock time; no framework is imposed Accepted
0026 The target’s OS and architecture are vocabulary of their own, derived from the triple Accepted
0027 A toolchain declares its argument style; dowel spells what it assembles, and translates nothing else Accepted
0028 What was asked of a tool is recorded outside the project, keyed by the tool’s identity Accepted
0029 An archive dependency is pinned by its contents; fetching is delegated, verification is not Accepted