software-engineering-canon

A curated canon of battle-tested software design principles, type-driven techniques and architectures.

Practices

Habits and tooling that make the principles and architectures stick.

Enforce boundaries with tooling

Use crate or project references, dependency-rule linters and architecture tests; documentation alone is not enough.

Serves
Evolutionary architecture with fitness functions

Architecture decision records

Record each significant decision together with its context.

Test at the seams

Fast core tests with in-memory adapters, contract tests per port, and few end-to-end tests.

Pairs with
Hexagonal architecture (ports and adapters) (In-memory adapters make core tests fast.)

Twelve-factor discipline

Keep configuration, logging and process handling disciplined and environment-independent.

Observability as a port

Structured logs, traces and metrics are a first-class outbound port, not an afterthought.

CI as the gatekeeper

Format, lint, type-check and test on every change.