Replace the ad-hoc stdlib venv with a uv-managed, locked environment and
add the quality gates:
- pre-commit: ruff (lint + format), pyright, pytest at 100% coverage
- pre-push: pylint, mypy --strict
- commit-msg: conventional commits
pytest and pyright run with pass_filenames: false so they always see the
whole project; --cov-fail-under stays in the hook rather than addopts so
single-file TDD runs are not blocked by coverage.
requires-python is >=3.12 because numpy 2.5 does not support 3.11.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>