feat(ci): introduce matrix builds for multiple Python versions #1894

Closed
opened 2026-04-03 00:08:56 +00:00 by freemo · 2 comments
Owner

Metadata

  • Branch: task/ci-matrix-python-versions
  • Commit Message: feat(ci): introduce matrix builds for multiple Python versions
  • Milestone: v3.8.0
  • Parent Epic: #1678

Overview

The CI pipeline currently tests against a single, hard-coded Python version. This means regressions introduced by Python minor-version differences (e.g., typing changes, stdlib behaviour, deprecations) go undetected until a user reports them in production.

Introducing a matrix strategy across the supported Python versions (e.g., 3.11, 3.12, 3.13) will:

  • Catch version-specific failures early in the development cycle.
  • Provide confidence that every release is compatible with the full supported range declared in pyproject.toml.
  • Align with the project's quality-first philosophy and the ≥97% coverage requirement across all target runtimes.

Subtasks

  • Identify the Python version range declared in pyproject.toml (e.g., requires-python) and confirm which versions to include in the matrix
  • Add a strategy.matrix block to the relevant CI jobs in .forgejo/workflows/ci.yml (at minimum: lint, typecheck, unit_tests, integration_tests, coverage)
  • Parameterise the python-version input of the setup-python / hatch step using the matrix variable
  • Ensure the coverage job aggregates or reports per-matrix-leg so the ≥97% gate is enforced on every version
  • Update features/ci_workflow_validation.feature to assert that the matrix strategy is present and covers the expected versions
  • Verify all nox stages pass for each matrix leg
  • Confirm coverage ≥ 97% on every matrix leg

Definition of Done

  • .forgejo/workflows/ci.yml contains a strategy.matrix block covering all supported Python versions declared in pyproject.toml
  • Every matrix leg runs lint, typecheck, unit tests, integration tests, and coverage independently
  • The ≥97% coverage gate is enforced per matrix leg (no single version is silently skipped)
  • features/ci_workflow_validation.feature is updated to assert the matrix configuration
  • All nox stages pass
  • Coverage >= 97%

Automated by CleverAgents Bot
Supervisor: Unknown | Agent: ca-new-issue-creator

## Metadata - **Branch**: `task/ci-matrix-python-versions` - **Commit Message**: `feat(ci): introduce matrix builds for multiple Python versions` - **Milestone**: v3.8.0 - **Parent Epic**: #1678 ## Overview The CI pipeline currently tests against a single, hard-coded Python version. This means regressions introduced by Python minor-version differences (e.g., typing changes, stdlib behaviour, deprecations) go undetected until a user reports them in production. Introducing a matrix strategy across the supported Python versions (e.g., 3.11, 3.12, 3.13) will: - Catch version-specific failures early in the development cycle. - Provide confidence that every release is compatible with the full supported range declared in `pyproject.toml`. - Align with the project's quality-first philosophy and the ≥97% coverage requirement across all target runtimes. ## Subtasks - [ ] Identify the Python version range declared in `pyproject.toml` (e.g., `requires-python`) and confirm which versions to include in the matrix - [ ] Add a `strategy.matrix` block to the relevant CI jobs in `.forgejo/workflows/ci.yml` (at minimum: `lint`, `typecheck`, `unit_tests`, `integration_tests`, `coverage`) - [ ] Parameterise the `python-version` input of the `setup-python` / `hatch` step using the matrix variable - [ ] Ensure the `coverage` job aggregates or reports per-matrix-leg so the ≥97% gate is enforced on every version - [ ] Update `features/ci_workflow_validation.feature` to assert that the matrix strategy is present and covers the expected versions - [ ] Verify all nox stages pass for each matrix leg - [ ] Confirm coverage ≥ 97% on every matrix leg ## Definition of Done - [ ] `.forgejo/workflows/ci.yml` contains a `strategy.matrix` block covering all supported Python versions declared in `pyproject.toml` - [ ] Every matrix leg runs lint, typecheck, unit tests, integration tests, and coverage independently - [ ] The ≥97% coverage gate is enforced per matrix leg (no single version is silently skipped) - [ ] `features/ci_workflow_validation.feature` is updated to assert the matrix configuration - [ ] All nox stages pass - [ ] Coverage >= 97% --- **Automated by CleverAgents Bot** Supervisor: Unknown | Agent: ca-new-issue-creator
freemo added this to the v3.8.0 milestone 2026-04-03 00:09:30 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • MoSCoW: MoSCoW/Could Have — CI/test infrastructure improvement.

Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: ca-project-owner

Issue triaged by project owner: - **State**: Verified - **MoSCoW**: MoSCoW/Could Have — CI/test infrastructure improvement. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
Author
Owner

Closing as duplicate of #2031. Both issues address implementing matrix builds for multiple Python versions. #2031 (v3.8.0, MoSCoW/Could Have) is the canonical issue.


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: ca-project-owner

Closing as duplicate of #2031. Both issues address implementing matrix builds for multiple Python versions. #2031 (v3.8.0, MoSCoW/Could Have) is the canonical issue. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
Sign in to join this conversation.
No milestone
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.

Reference
cleveragents/cleveragents-core#1894
No description provided.