Skip to content

Contributing

The canonical contribution guide lives at CONTRIBUTING.md in the repository root. This page summarizes the contract.

The short version

  1. Fork the repository and create a topic branch off main.
  2. Make your changes; keep them focused — one PR, one concern.
  3. Run the local quality gates:
    python -m ruff check .
    python -m ruff format --check .
    python -m mypy
    python -m pytest -q
    python scripts/dev/validate_ecosystem.py
    
  4. Update CHANGELOG.md [Unreleased] with a one-line entry under the appropriate section (Added / Changed / Fixed / Removed / Security).
  5. Open a PR using the canonical PR template; sign off your commit with git commit -s (DCO).

Conventional commits

Commit messages follow the Conventional Commits spec:

<type>(<optional scope>): <subject>

<optional body>
<optional footer>

Supported types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert. The full template lives at .gitmessagegit config commit.template .gitmessage applies it locally.

Code review expectations

Every PR is reviewed against:

  • The ten CI check classes (see cicd-pipeline.md).
  • The eight planning techniques surfaced at src/apothem/rules/planning-techniques.md.
  • The CM-N mandates surfaced at src/apothem/rules/operational-mandates.md.
  • The Bindings five-direction matrix (every new artifact carries the canonical block).

Code of Conduct

Contributors are expected to follow CODE_OF_CONDUCT.md (Contributor Covenant 2.1). Enforcement reports route through SECURITY.md.

Licensing of contributions

By submitting a PR, you license your contribution under the project's MIT License (see LICENSE) and acknowledge the DCO sign-off in your commit messages.