Skip to content

maat axiom declare ​

Records a human-authored architectural claim in the ledger.

bash
maat axiom declare \
  --id stable-boundary \
  --scope packages/core \
  --claim "Core must not import CLI code"
maat --config ./path/to/maat.config.ts axiom declare \
  --id stable-boundary \
  --scope packages/core \
  --claim "Core must not import CLI code"

What an axiom is ​

An axiom is not an automated finding. It is a manual claim the team wants to keep next to the codebase until there is a rule that can check it.

Axioms can also cover specific finding fingerprints. A covered fingerprint is treated as an explicit exception while the axiom is active.

bash
maat axiom declare \
  --id domain-db-exception \
  --scope @myapp/domain \
  --claim "The legacy domain database adapter is allowed until the repository split." \
  --fingerprints abc123,def456

Options ​

OptionPurpose
--id <id>Required. Stable slug identifying the axiom.
--scope <scope>Required. Architectural scope the axiom applies to.
--claim <claim>Required. Invariant or exception being asserted.
--note <note>Optional rationale or references.
--fingerprints <fingerprints>Comma-separated finding fingerprints covered by the axiom. Each fingerprint must already exist in the ledger; the command exits with an error otherwise.

Ledger requirement ​

maat axiom declare requires a configured ledger. Without one, the command exits with an error.

When to use it ​

Use an axiom for architecture knowledge that should be recorded, reviewed, and versioned, but is not automated by a collector and rule yet.

See ADRs vs axioms for how axioms relate to architecture decision records.