This project uses uv.
uv sync --extra dev # create .venv and install the project + dev tools
uv run pytest # run the unit tests
uv run ruff check . # lint
uv run ruff format . # format- Python 3.12+. Keep the harness importable and unit-testable in isolation; service dependencies (TiTiler, object storage) belong in the deployment, not in the unit tests.
- CI never runs a benchmark. It lints, unit-tests the harness, builds the runner image, and proves the stack deploys. Anything that needs real data or real infrastructure runs on a deployed stack, not in CI.
- Datasets and runs are configuration. Adding a dataset or a target format should not require touching CI or the deployment manifests.
- PRs are squash-merged, and the PR title must follow
Conventional Commits (
feat:,fix:,docs:,ci:,chore:, …). ThePR Titlecheck enforces this. - Releases are automated with release-please: the title of each merged PR drives
the version bump and
CHANGELOG.md. Merging the release PR tags a GitHub Release and publishes the runner image to GHCR. See the Releasing guide.
docker build -f docker/Dockerfile.runner -t cng-benchmark-runner:dev .
docker run --rm cng-benchmark-runner:dev version