f60c996000
Key optimisations applied to .forgejo/workflows/ci.yml: 1. Remove unnecessary needs: [lint, typecheck, security, quality] from the coverage job. Coverage runs the full unit-test suite independently under slipcover and does not depend on static-analysis results. Removing this dependency allows coverage to start immediately in parallel with all other jobs, eliminating a sequential bottleneck that forced coverage to wait for four upstream jobs before it could begin. 2. Reduce docker job gate from needs: [lint, typecheck, security, quality, unit_tests] to needs: [unit_tests] only. The Docker image build does not require static-analysis results to succeed; gating on unit_tests alone is sufficient to ensure the image is built from tested code. 3. Add uv.lock to all cache keys (was pyproject.toml only). Including the lock file produces a more precise cache key: a dependency version bump now correctly invalidates the cache, and unchanged lock files yield higher hit rates across PRs that only touch source code. 4. Add per-job .nox virtualenv caching for all jobs (lint, typecheck, security, quality, unit_tests, integration_tests, e2e_tests, coverage, build). On cache hit, nox skips the full uv pip install step, saving 30-90 s of package installation time per job per run. Expected aggregate wall-clock reduction: >50% vs the 3556 s baseline (target: <=1778 s over 20 PRs), primarily from parallelising coverage and reducing per-job install overhead via nox venv caching. ISSUES CLOSED: #1641