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 |