git clone <repo-url> && cd traust-engine
make setupInstalls deps (uv sync) and enables git hooks. One time per clone.
Conventional commits required. Format: type(scope): subject
Types: feat, fix, perf, refactor, docs, test, chore, ci, build, style, revert
feat(adapters): add semgrep adapter
fix(validation): handle empty SARIF
perf!: drop Python 3.11 support ← breaking change
| Hook | Runs | Speed |
|---|---|---|
commit-msg |
subject format check | instant |
pre-commit |
ruff lint on staged .py |
<1s |
pre-push |
full lint + unit tests | ~10s |
Bypass: --no-verify on commit or push. CI still enforces.
If your MR has feat:, fix:, perf:, or ! (breaking) commits:
make bump minor
# add ## [X.Y.Z] section to CHANGELOG.md
make check-release
git add VERSION pyproject.toml CHANGELOG.md
git commit -m "chore: release X.Y.Z"CI validates on MR. On merge to main, CI tags automatically.
MR: lint → conventional commits → release-ready → tests
Main: tag if VERSION > latest git tag
Consumers pin this repo by commit sha ([tool.uv.sources] rev = "<sha>"), not
a release tag — a tag needs this repo's own release cut first, a commit
doesn't. After your change merges to main, bump the pin to the new commit in
each direct downstream repo's pyproject.toml, uv lock, and run that
repo's own tests before opening its PR.
Direct downstream: traust.
make test # unit tests (no external binaries needed)
uv run pytest -q # full suite (integration needs gitleaks/opengrep)See README.md for module layout, install, and runtime config.