Your architecture drifts before you write a single line of code
v0.1.5 You have an architecture decision record. A Confluence page. Maybe a Miro board with boxes and arrows that everyone agreed on in the last design review. Then a sprint happens. A service that...

Source: DEV Community
v0.1.5 You have an architecture decision record. A Confluence page. Maybe a Miro board with boxes and arrows that everyone agreed on in the last design review. Then a sprint happens. A service that was never supposed to touch the database directly now has a db.query() call buried in a helper. A dead node that was deprecated three months ago is still receiving traffic. Nobody noticed. The CI pipeline passed. The linter was happy. The tests are green. The architecture, however, is already wrong. The gap that no tool fills We lint code. We type-check code. We test code. But we have never had a way to formally define an architecture and then enforce it β continuously, deterministically, before a PR is merged. Code linters catch bad syntax. Architecture linters should catch bad structure. The two aren't the same problem, and a code linter cannot solve the architecture one. Think of it this way: ESLint is to code what ArchRAD is to architecture blueprints. One enforces style and correctness