[Ops] Align Python version across CI, image, and docs #87

Closed
opened 2026-07-14 19:47:07 +00:00 by claude-bot · 0 comments
Contributor

Context

The Dockerfile ships python:3.14-slim for both runtime images (Dockerfile:16 backend-base, Dockerfile:99 bot-base), while all CI runs Python 3.12: .forgejo/workflows/ci.yml:97, ci.yml:134, ci.yml:168, and .forgejo/workflows/dependency-audit.yml:47 and :75. Dockerfile header comments and both CLAUDE.md files also say 3.12.

Current behavior

Tests, lint, and dependency audits all run on a different interpreter than production. A 3.14-only behavior change (or a dependency that resolves differently) ships untested; the audit checks wheels resolved for the wrong interpreter.

Fix / Spec

  1. Decide one version. Recommendation: pin the images back to python:3.12-slim as the safer, actually-tested prod target. (Alternative: bump every CI python-version to 3.14 — only if all deps, notably discord.py voice + audioop concerns, are verified on 3.14.)
  2. Align everywhere:
    • Dockerfile:16 and Dockerfile:99 base images plus any header comments
    • all python-version entries in .forgejo/workflows/ci.yml (lines 97, 134, 168) and .forgejo/workflows/dependency-audit.yml (lines 47, 75)
    • version mentions in the root CLAUDE.md and any component CLAUDE.md
  3. Renovate: renovate.json digest-pins the python image — confirm the pin/digest updates cleanly for the chosen tag and Renovate keeps tracking it.

Acceptance criteria

  • One Python minor version across Dockerfile, both workflows, and docs.
  • CI is green on the aligned version.
  • grep -r for the losing version string returns only CHANGELOG/history entries.
  • Renovate still tracks the python base image.

References

  • Dockerfile:16, Dockerfile:99
  • .forgejo/workflows/ci.yml:97,134,168
  • .forgejo/workflows/dependency-audit.yml:47,75
  • renovate.json

Filed from the July 2026 full-project review.

## Context The Dockerfile ships `python:3.14-slim` for both runtime images (`Dockerfile:16` backend-base, `Dockerfile:99` bot-base), while **all** CI runs Python 3.12: `.forgejo/workflows/ci.yml:97`, `ci.yml:134`, `ci.yml:168`, and `.forgejo/workflows/dependency-audit.yml:47` and `:75`. Dockerfile header comments and both `CLAUDE.md` files also say 3.12. ## Current behavior Tests, lint, and dependency audits all run on a different interpreter than production. A 3.14-only behavior change (or a dependency that resolves differently) ships untested; the audit checks wheels resolved for the wrong interpreter. ## Fix / Spec 1. Decide one version. **Recommendation: pin the images back to `python:3.12-slim`** as the safer, actually-tested prod target. (Alternative: bump every CI `python-version` to 3.14 — only if all deps, notably discord.py voice + audioop concerns, are verified on 3.14.) 2. Align everywhere: - `Dockerfile:16` and `Dockerfile:99` base images plus any header comments - all `python-version` entries in `.forgejo/workflows/ci.yml` (lines 97, 134, 168) and `.forgejo/workflows/dependency-audit.yml` (lines 47, 75) - version mentions in the root `CLAUDE.md` and any component CLAUDE.md 3. Renovate: `renovate.json` digest-pins the python image — confirm the pin/digest updates cleanly for the chosen tag and Renovate keeps tracking it. ## Acceptance criteria - [ ] One Python minor version across Dockerfile, both workflows, and docs. - [ ] CI is green on the aligned version. - [ ] `grep -r` for the losing version string returns only CHANGELOG/history entries. - [ ] Renovate still tracks the python base image. ## References - `Dockerfile:16`, `Dockerfile:99` - `.forgejo/workflows/ci.yml:97,134,168` - `.forgejo/workflows/dependency-audit.yml:47,75` - `renovate.json` _Filed from the July 2026 full-project review._
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/Quest-Board#87
No description provided.