The gitea runner containers have no docker access, so build the test
env with uv from the existing lockfile and run pytest directly:
- test_ebook_search workflow: uv sync --locked + uv run pytest, with
UV_PYTHON_DOWNLOADS=never so uv uses the nix-provided python 3.14
- add uv to the runner hostPackages (needs a jeeves rebuild to apply)
- ignore nested **/.venv in .dockerignore (uv sync creates one in
python/ebook_search/docker)
- document the uv test commands in the docker README; the docker test
image remains for validating the image itself