uv generated it while running ruff and pytest. The repo already tracks web/package-lock.json, so pinning the resolved Python dependencies the same way keeps CI and local runs reproducible instead of re-resolving each time.