AGPL-3.0-licensed project (see LICENSE). By contributing you agree your
contributions are licensed under the same terms.
- Zero person-specific facts in code — identity lives only in configuration.
- Tenant isolation is proven by the adversarial suite; data access goes through tenant-scoped repositories, never raw table access.
- New user-facing behavior starts in DRY_RUN.
- Every architecture decision gets an ADR in
docs/adr/before or with the code.
make setup # .venv + runtime + dev tooling
make verify # ruff + mypy + pytest (coverage-gated) — byte-for-byte what CI runsThis repo conforms to the portfolio STANDARDS/ set; see the conformance table in
README.md. Changes that tighten a gate are breaking and say so in
CHANGELOG.md.