Stop Architecture Drift: Operationalizing ADRs with Automated Fitness Functions
Six months after we standardized on OpenSearch, a pull request introduced Datadog into a service. The ADR existed. It had been discussed, approved, and stored in the repo. The PR was still green. T...

Source: DEV Community
Six months after we standardized on OpenSearch, a pull request introduced Datadog into a service. The ADR existed. It had been discussed, approved, and stored in the repo. The PR was still green. That is architecture drift. Not because engineers are careless. Because memory does not scale across hundreds of people and dozens of repositories. After we started checking ADRs in CI, we caught several violations like this in the first month and dozens more in the first quarter before they reached production. This is the difference between documenting architecture and operationalizing it. Documentation tells people what the decision was. Operationalization puts that decision in the path of delivery. This post is the system behind that: take an ADR, turn it into an automated check, and run it against every PR diff. I went this direction because I needed one approach that worked across Go, Python, Terraform, and Kubernetes without maintaining a separate rule engine for each. The Problem: Archi