STfA
tooling

Decision Log Tooling

The immunological memory of software architecture. A machine-readable record of WHY we chose the pain we are still living with three years later.

technologyteams·3 min read

What is this?

The immunological memory of software architecture. A machine-readable record of WHY we chose the pain we are still living with three years later.

Why it matters

Tools help make systems thinking practical in analysis, communication, and implementation.

Next step

Always combine the tool with a diagnostic or intervention logic instead of using it in isolation.

~3 min read
Hero image for Decision Log Tooling

System Purpose

In systems thinking, ignorance of the past is a leading cause of fatal re-engineering. Chesterton's Fence still applies: never tear down a fence until you understand why it was built. When a new lead developer stares at the code and groans, "Why on earth are we using SOAP instead of REST? I'll rewrite this immediately," they are about to commit system suicide because they do not know the *context* of the original decision. Architects leave companies, and context dies with them. *Decision Log Tooling* automates the archival of those cybernetic trade-offs directly in the codebase.

Tool Mechanics

The core format is the *Architecture Decision Record (ADR)*, popularized by Michael Nygard. Formal tools such as adr-tools or log4brains generate small Markdown files directly inside your Git repository, often under docs/adr/. An ADR forces the architect into five brutally simple blocks:

1.Title: "Move from MongoDB to PostgreSQL"

2.Status: Proposed / Accepted / Deprecated

3.Context: "Our document size exceeds RAM limits"

4.Decision: "We will enforce relational storage"

5.Consequences: "Positive: no more OOM crashes. Negative: every developer has to relearn SQL."

Architecture Use

Decision tooling is the anchor of explicit trade-off policies. If the chief architect declares that no infrastructure Terraform script may reach production without an accepted ADR, they are changing the rules of the system at a high-leverage point. Developers can no longer drift into architecture decisions based on intuition alone. They must justify their assumptions in writing to the whole company.

Limits and Risks

ADRs can mutate into useless micromanagement bureaucracy. If developers start logging "ADR 0534: use for instead of while for lists," the repository bleeds out in noise. An ADR is a systems document. It should be written *only* when the decision bends a meaningful system property, usually some quality attribute or trade-off such as sacrificing performance for security. Small choices belong in pull request comments, not in the architecture log.

Diagram

System diagram for Decision Log Tooling
Diagram: Decision Log Tooling

Differentiation

*Confluence and wikis* are documentation graveyards far from the code. *Causal Loop Tools* map the present state. *Decision Log Tooling (ADRs)* secures the time axis. The records live next to the code in Git, travel with version history, and decay when the code decays, which is exactly the docs-as-code advantage.

Decision and Practice Guide

Make ADRs irreversible within the delivery pipeline. Use tooling that runs a Markdown linter in CI/CD. If a developer opens a pull request that provisions a new cloud database, the build server should refuse to proceed unless the same change set also contains something like 0042-use-cloud-database.md in the ADR folder. Force the tooling into the physical breathing rhythm of the development process.

Sources

Michael Nygard — Documenting Architecture Decisions (Blog, 2011)

adr-tools — CLI for Architecture Decision Records (GitHub)

Log4brains — Architecture Knowledge Base (GitHub)

Authors & Books

Go to references

Relevant references for Decision Log Tooling.