90% of linters catch style. They tell you that your line is 81 characters
or that you forgot a docstring. What they don't tell you is that your payments/
module has zero tests, three circular imports, and a god class that 14 other files
depend on — and that the last team with this exact pattern had a 4-hour outage
that cost them €47,000.
The Incident That Started It
Two years ago I was building a data pipeline. Kafka → Python workers → ClickHouse. Standard stack, nothing exotic. We had pylint, mypy, bandit, the whole CI choir. Green builds, 94% coverage, everyone happy.
Then one Tuesday at 3:14 AM, the ingestion worker froze. Not crashed — froze. Kafka lag grew to 2 million messages. ClickHouse started rejecting writes. By 6 AM the dashboard was a red wall and the CTO was in the war room.
Root cause? A single Python file — ingestion/handlers.py — had grown
to 1,800 lines. It imported 23 other modules, 4 of them circularly. When one
handler threw an exception, the cleanup logic (also in the same file) tried to
close a connection that was still held by the circular import path. Deadlock.
We had 11 linting tools. None of them flagged "this file is too big" or "these imports form a cycle." Because that's not their job. Their job is style, types, and security — not architecture.
What ArchDogma Actually Does
ArchDogma is an architectural linter. It doesn't care about your quotes or your type hints. It cares about:
- Circular imports — the silent killer of startup time and testability
- God modules — files that grew so big they became single points of failure
- Tight coupling — when 12 files depend on one internal class, refactoring becomes surgery
- Missing tests on critical paths — because coverage percentage is a lie if payment logic has 0%
- Dead code clusters — functions no one calls but everyone is afraid to delete
Every finding comes with a link to a real postmortem. Not a vague "best practice" — an actual incident: what broke, why, how long it took to fix, and what the code looked like before it blew up.
Real Output on Real Code
Here's what archdogma scan . looks like on a mid-size Django project:
$ archdogma scan . --severity=high
✓ scanned 47 files, 12 detectors
⚠ ARCH001 circular_import
utils.py:12 imports models.py
models.py:8 imports utils.py
→ cycle: 2 files, 7 functions affected
[postmortem: pm-2024-003-ring-buffer-deadlock]
⚠ ARCH005 god_module
views.py: 1,247 lines, 14 classes, 37 public functions
→ 14 other files import from this module directly
[postmortem: pm-2023-011-monolith-handler-freeze]
⚠ ARCH009 missing_tests
payments/ directory: 0% coverage, 2,400 lines of code
→ 14 past incidents linked to untested payment paths
[postmortem: pm-2025-001-checkout-race-condition]
⚠ ARCH012 tight_coupling
db_session created in handler.py:142
passed to 6 downstream functions (never mocked in tests)
→ average test runtime: 4.2s per case (DB hits)
[postmortem: pm-2024-007-test-suite-timeout]
Each [postmortem] link opens a one-page incident report: what the code
looked like, what the trigger was, how long the outage lasted, and the exact
refactor that prevented recurrence. No theory — just scars.
Why This Isn't Just Another Linter
Pylint tells you what is wrong with your style. Mypy tells you what is wrong with your types. Bandit tells you what is wrong with your security.
ArchDogma tells you when your architecture is about to cost you money. It links each smell to a real incident with a real dollar amount. The postmortem catalog currently has 14 cases, and every one of them started with a code pattern that a standard linter would ignore.
The difference is context. A 1,200-line file isn't always bad. But a 1,200-line file that 14 other modules import directly, that has zero tests, and that handles payment state transitions — that's a bomb with a timer. ArchDogma knows the difference because it reads the whole graph, not just one file.
The Pro Kit: From Open Source to Revenue
The open-source core (pip install archdogma) is free forever. It has
12 Tier 1 detectors, whole-project scanning, JSON output, and GitHub Actions
integration. Use it. Abuse it. Ship it.
But if you want the postmortem catalog, the team-size configs, and the step-by-step CI setup guide, that's the ArchDogma Pro Kit.
- Consultation (150€) — 2-hour Zoom. I run ArchDogma on your repo live. You get 5–10 real issues with file:line context, prioritized fix list, and a CI blueprint for your stack.
- Self-Service Pack (49€) — Course + templates + postmortem catalog + lifetime updates. Set up architecture auditing in CI in one day.
- Enterprise (from 400€) — Custom detectors, private postmortem ingestion, team onboarding, Slack support.
Two consultations a week = 50€/day. That's the goal. Everything else is documentation.
What I Want You To Do Now
If you've ever been woken up at 3 AM by a code pattern that "should have been obvious in hindsight," try this:
pip install archdogma
archdogma scan . --severity=high
Look at the first finding. Click the postmortem link. Read the incident. Then ask yourself: could this happen to us?
If the answer is yes — book a consultation or grab the Self-Service Pack. Architecture doesn't lie. You just need to ask it the right questions.