Skip to content

Latest commit

 

History

History
60 lines (43 loc) · 2.66 KB

CONTRIBUTING.md

File metadata and controls

60 lines (43 loc) · 2.66 KB

Contributing

Use GitHub Issues for reproducible defects and feature proposals. Use GitHub Discussions for questions and open-ended design discussion. Keep changes focused and describe the observable behavior they affect.

Development setup

Envman targets Python 3.12 and pins its uv development workflow:

uv sync --locked --group dev

Install the repository hooks for local commit and push checks:

git config core.hooksPath .githooks

Checks

Run the tests that cover your change. The repository test suite can be run with:

uv run --locked --no-sync python -m unittest discover -s tests -p 'test_*.py'

Do not include credentials, managed environment values, backup passwords, private paths, or machine-specific output in commits, issues, or pull requests. Update public documentation when a user-visible behavior or command changes. Do not hand-edit generated release artifacts; keep their source and generated form consistent.

Use Conventional Commits for commit titles. Contributions are released under the MIT License. Follow the Code of conduct.

Copyright and signed publication

Copyright (c) 2026 Crux Experts LLC. Source and documentation contributions use the MIT License; preserve third-party notices and the separate private rights notices on original artwork. The repository policy owns these boundaries.

Maintainer commits and annotated release tags must be RSA OpenPGP-signed with the Crux Experts LLC key, primary fingerprint AF7968466B5B39C5E928FEFE716342D3EFBA5522, using pgp@cruxexperts.com as the committer and tagger email. Keep the private key outside the checkout; only the public certificate belongs in version control. Contributor commits should be signed with their own verified keys; the maintainer signs the integrated source. GitHub's main-branch rule requires signed commits, while the release gate additionally requires the specific publisher key.

For maintainer checkouts with that private key already available:

git config --local user.email pgp@cruxexperts.com
git config --local user.signingkey AF7968466B5B39C5E928FEFE716342D3EFBA5522
git config --local gpg.format openpgp
git config --local commit.gpgsign true
git config --local tag.gpgsign true

These settings do not create, import, or authorize access to a private key. Do not use an unsigned fallback if signing fails. See release verification before publishing.