Skip to content

Architecture decisions

Short records of decisions that are hard to reverse, where there was a real alternative, or where the reasoning would otherwise be lost.

They are referenced by number from code comments, hooks, workflows and the rest of the documentation. A decision that changes gets a new ADR that supersedes the old one; the old one stays, because the reasoning still explains the code that existed.

# Decision
001 The rendered state of a template is a Git ref
002 No custom merge or reconciliation
003 MiniJinja is the only template engine
004 A single crate, not a workspace
005 Template refs are append-only
006 No runtime values in the template context
007 Question order is derived from a static dependency graph
008 Provenance lives in commit trailers, not in the tree
009 init merges the template commit into the branch
010 Project configuration lives at .config/git.tpl.toml
011 git2 is confined to one module, enforced by a hook
012 Partials are .jinja files outside the render root
013 User preferences live in ~/.config/git-tpl/config.toml
014 An undefined name in a rendered file may be an error
015 --json carries a stable diagnostic code on every failure