Capability: repo-tooling
The Python project, its checks, its git hooks, CI, releases to PyPI and the docs site.
What it is
The toolchain every change to tiny-harness passes through. The pre-commit hooks define the checks; CI and the release workflow run the same hooks. The how-to lives in the guide; this page states the behaviour.
Current behaviour
- The project SHALL be the
tiny_harnessdistribution, built byuv_buildfrom the top-leveltiny_harness/package, requiring Python 3.14 or later. uv syncSHALL create.venv/in the repository root fromuv.lock; CI SHALL fail on a stale lockfile (uv sync --locked).- The package SHALL expose
hello_world(), returning"Hello, world!". - The
pre-commithook SHALL run ruff (lint, format), pyright (strict), the unit tests and markdownlint; thecommit-msghook SHALL reject non-Conventional Commit messages.uv run pre-commit installinstalls both. - On every pull request,
ci.ymlSHALL run the pre-commit hooks over all files, the integration tests and the docs build, with a read-only token. - On every push to
main,release.ymlSHALL runci.yml, then — when the commits since the last tag warrant it — bump the version with commitizen, push thebump:commit andv<version>tag, and publish to PyPI via Trusted Publishing from thepypienvironment. Nothing releasable means no publish. - On every push to
mainthat touchesdocs/,docs.ymlSHALL build the VitePress site and deploy it to GitHub Pages at/tiny-harness/.
Design
History
| Work item | What changed | Links |
|---|---|---|
| issue-2 | Initial toolchain: uv, ruff, pyright, pytest, commitizen, pre-commit, CI, PyPI release, VitePress docs | spec, issue #2, PR #5, decision-001 |