Skip to content

Architecture decisions

Short records of decisions that were expensive to make and would be expensive to reverse. Each states the forces at the time, what was chosen, what was rejected, and what the choice costs โ€” because a decision without its rejected alternatives is folklore, and the next person will re-litigate it from scratch.

Format: a trimmed MADR. Records are immutable once accepted; a decision that changes gets a new record that supersedes the old one, and the old one stays readable.

# Decision Status
0001 Adopt datapizza-ai as the agent vocabulary Accepted
0002 Unify the agentic loop behind ports Accepted
0003 Ship an offline scripted backend in the product Accepted
0004 Name the project Dogana Superseded by 0005
0005 Name the project Annona Accepted

Writing one

Add a record when a decision meets any of these:

  • it constrains what the code can become (layering, dependencies, protocols);
  • it was contested, or the losing option was reasonable;
  • it will look wrong to someone who was not in the room.

Skip one when the choice is local, cheap to reverse, and obvious from the code.

docs/adr/NNNN-short-title.md