- root pyproject.toml replaces requirements.txt and requirements-worker.txt
(worker = root + ffmpeg-python which root already had); test deps moved
to [dependency-groups] dev
- core/gpu/pyproject.toml replaces core/gpu/requirements.txt; uses
[tool.uv.sources] to pin torch/torchvision and paddlepaddle-gpu to their
CUDA index URLs, replacing the manual reinstall dance from old comments
- Dockerfiles use uv sync --frozen against uv.lock for reproducible builds;
PATH includes /app/.venv/bin so k8s manifests' bare uvicorn/celery
commands resolve without wrapping in uv run
- core/gpu/run.sh local mode now does uv sync + uv run python server.py;
errors out cleanly if uv is missing