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 |