Skip to main content

ArchDogma

ArchDogma badge

A catalog of real engineering failures. The scanner is just a way to find them in your code.


The Catalog

Programming has sacred rules. "Always test." "Use microservices." "No copy-paste." "Clean Architecture." Nobody tells you when these rules start strangling your system.

ArchDogma collects real postmortems — companies that followed a rule and paid for it. Not to say the rules are wrong. To say they have conditions.

Current catalog: 12 dogmas, 11 with postmortems.

Browse the full catalog: DOGMAS.md

Or from the CLI:

pip install archdogma

# View all dogmas with their status and linked cases
archdogma dogmas

# Search for a specific pattern
archdogma search "microservices"
archdogma search "inheritance"
archdogma search "coverage"

Selected postmortems

Microservices for everything → Segment (2022) 140+ services, one per data destination. Routing logic duplicated 140 times. On-call couldn't hold the system in their head. Rewrote as one Go service. Delivery reliability improved. → full case

DRY → shared config with 14 flags (QuackNet, 2025) ProbeConfig abstracted after 2 similar structs. Grew to 14 flags as 4 subsystems diverged. A Kafka change broke the Wi-Fi probe. Split back into 3 structs. The abstraction cost more than the duplication would have. → full case

TDD → over-mocked suite that passed but missed integration bugs (Basecamp, 2014) Tests mocked every boundary for unit purity. Integration bugs multiplied. DHH: "Test-driven development as ideology led to designing for tests instead of designing for the problem." → full case

OOP inheritance → 7 files for a 5-line business rule (Java EJB era, 2002) EJB 2.x required Home + Local + Remote interfaces + XML for every entity. Rod Johnson documented it and built Spring to eliminate the inheritance tax. → full case


The Scanner

Once you know which dogmas are in play, find them in your code:

# Probe one function — Trust Score, AST tags, linked dogmas
archdogma probe mymodule.py -f MyClass.process

# Scan a project — CI-ready
archdogma scan src/
archdogma scan src/ --fail   # exit 1 if any tag fires
archdogma scan src/ --format json

The scanner detects 12 Tier 1 patterns — deep-inheritance, god-class, magic-numbers, if-on-parameter, dynamic-magic, broad-except, mutable-default-arg, too-many-returns, and more. Each tag links back to the catalog.

The scanner is secondary. The catalog is the point. If the catalog didn't have real postmortems, the scanner would just be another linter. The postmortems are what make a detected pattern meaningful: "here's who followed this rule and where it broke them."


Install

pip install archdogma

Or from source:

git clone https://github.com/gaidar0yegor/ArchDogma
cd ArchDogma
pip install -e .

Why This Exists

90% of engineering is understanding old code. And that code is full of dogmas applied without context. "Always test" — gamified into 100% coverage with no assertions. "Microservices" — applied to a 3-person team building one product. "Clean Architecture" — 5 layers for a CRUD app.

The pattern is predictable: a good rule gets applied without its conditions. Nobody wrote down when it stops working. The postmortems exist to fix that.


Honesty rules

  • Every postmortem has a source link, or is explicitly marked first-party / source_url: null.
  • Every claim can be challenged via the honesty-bug label on GitHub.
  • The scanner produces verifiable AST signals. No "expert" numbers without evidence.
  • If a detector doesn't exist yet, the catalog says so: [NEED POSTMORTEMS].

Accessibility

Voice mode from day one:

archdogma probe mymodule.py -f my_function --speak

Sighted and blind engineers get the same information. Not "later" — from the start.


Contributing

What we need most: real postmortems. Which dogma was applied at your company, under what conditions, and what broke.

  • Post-mortem sources — open an issue with postmortem label
  • Blind/low-vision engineers — primary reviewers of voice mode
  • Honesty bugs — if you see a claim without a source, open honesty-bug

Source of truth for the catalog: catalog/dogmas.yaml. DOGMAS.md is auto-generated via archdogma render-catalog.


License

MIT. Fork it, improve it.

If your fork drops the honesty rules or voice mode — don't call it ArchDogma.

🦫

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

archdogma-0.2.1.tar.gz (305.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

archdogma-0.2.1-py3-none-any.whl (41.5 kB view details)

Uploaded Python 3

File details

Details for the file archdogma-0.2.1.tar.gz.

File metadata

  • Download URL: archdogma-0.2.1.tar.gz
  • Upload date:
  • Size: 305.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for archdogma-0.2.1.tar.gz
Algorithm Hash digest
SHA256 e32fbc528a5e1e1e1aacfb9f2cde395e38bc8f41193089bb5eae986c9a396262
MD5 83475468ee600c0685e15901fb2d9665
BLAKE2b-256 28f8e1fc0bbce8b56b250c3eafcd4c4cef26f5f8d33402ccd77d72793c8b857d

See more details on using hashes here.

Provenance

The following attestation bundles were made for archdogma-0.2.1.tar.gz:

Publisher: publish.yml on gaidar0yegor/ArchDogma

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file archdogma-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: archdogma-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 41.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for archdogma-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9df9d22275e0818bb9a300c62583ce2edbcf9a9987815e795f6c202c24179ffb
MD5 fe9e54daeb14f0dca44ab2d70d29c662
BLAKE2b-256 db8ec14f0eb2a2c46b64f4d022910f7f8a59d9a7642108d25c140d847cb001e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for archdogma-0.2.1-py3-none-any.whl:

Publisher: publish.yml on gaidar0yegor/ArchDogma

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page