TEST-INFRA: [dependency-security] Dev and test dependencies are not pinned #3477

Open
opened 2026-04-05 18:30:22 +00:00 by freemo · 0 comments
Owner

Metadata

  • Branch: fix/dependency-security/pin-dev-test-deps
  • Commit Message: fix(deps): pin dev and test dependencies via uv lock --all-extras
  • Milestone: N/A — backlog (see backlog note below)
  • Parent Epic: #400

Summary

The uv.lock file does not include the dependencies from the [project.optional-dependencies] section of pyproject.toml. This means that the exact versions of development and testing tools are not pinned.

Problem

Without pinned dependencies, the project is exposed to the following risks:

  • Non-reproducible builds: Different developers might get different versions of the tools, leading to inconsistent behavior.
  • Vulnerability scanning: It's impossible to scan the development and testing dependencies for known vulnerabilities.
  • Unexpected updates: A new version of a tool might be released with breaking changes, which could break the development or testing workflow.

Expected Behavior

All development and testing dependencies declared in [project.optional-dependencies] in pyproject.toml are included in uv.lock, ensuring:

  • Fully reproducible builds across all developer environments and CI runners.
  • Vulnerability scanning tools can inspect the complete dependency graph.
  • No unexpected version drift in tooling between environments.

Acceptance Criteria

  • uv.lock includes all entries from [project.optional-dependencies] in pyproject.toml.
  • Running uv sync --all-extras installs the exact pinned versions from uv.lock.
  • A security/vulnerability scan tool (e.g., uv audit or equivalent) can successfully scan all dev/test dependencies.
  • CI passes with the updated lockfile.

Supporting Information

  • Proposal: Run uv lock --all-extras to regenerate uv.lock with all optional dependency groups included.
  • Related to the project's security posture and build reproducibility goals.

Subtasks

  • Audit pyproject.toml to identify all [project.optional-dependencies] groups not currently in uv.lock
  • Run uv lock --all-extras to regenerate uv.lock with all optional dependency groups
  • Verify uv sync --all-extras installs correctly from the updated lockfile
  • Confirm a vulnerability scan (e.g., uv audit) can now inspect dev/test dependencies
  • Update CI workflow if needed to use uv sync --all-extras for dev/test environments
  • Run nox (all default sessions), fix any errors
  • Verify coverage >= 97% via nox -s coverage_report

Definition of Done

This issue is complete when:

  • All subtasks above are completed and checked off.
  • uv.lock includes all optional dependency groups from pyproject.toml.
  • A Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional lines providing relevant details about the implementation.
  • The commit is pushed to the remote on the branch matching the Branch in Metadata exactly.
  • The commit is submitted as a pull request to master, reviewed, and merged before this issue is marked done.
  • All nox stages pass.
  • Coverage >= 97%.

Backlog note: This issue was discovered during autonomous operation
on milestone v3.7.0. It does not block milestone completion and has been
placed in the backlog for human review and future milestone assignment.


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

## Metadata - **Branch**: `fix/dependency-security/pin-dev-test-deps` - **Commit Message**: `fix(deps): pin dev and test dependencies via uv lock --all-extras` - **Milestone**: N/A — backlog (see backlog note below) - **Parent Epic**: #400 ## Summary The `uv.lock` file does not include the dependencies from the `[project.optional-dependencies]` section of `pyproject.toml`. This means that the exact versions of development and testing tools are not pinned. ## Problem Without pinned dependencies, the project is exposed to the following risks: - **Non-reproducible builds:** Different developers might get different versions of the tools, leading to inconsistent behavior. - **Vulnerability scanning:** It's impossible to scan the development and testing dependencies for known vulnerabilities. - **Unexpected updates:** A new version of a tool might be released with breaking changes, which could break the development or testing workflow. ## Expected Behavior All development and testing dependencies declared in `[project.optional-dependencies]` in `pyproject.toml` are included in `uv.lock`, ensuring: - Fully reproducible builds across all developer environments and CI runners. - Vulnerability scanning tools can inspect the complete dependency graph. - No unexpected version drift in tooling between environments. ## Acceptance Criteria - [ ] `uv.lock` includes all entries from `[project.optional-dependencies]` in `pyproject.toml`. - [ ] Running `uv sync --all-extras` installs the exact pinned versions from `uv.lock`. - [ ] A security/vulnerability scan tool (e.g., `uv audit` or equivalent) can successfully scan all dev/test dependencies. - [ ] CI passes with the updated lockfile. ## Supporting Information - **Proposal**: Run `uv lock --all-extras` to regenerate `uv.lock` with all optional dependency groups included. - Related to the project's security posture and build reproducibility goals. ## Subtasks - [ ] Audit `pyproject.toml` to identify all `[project.optional-dependencies]` groups not currently in `uv.lock` - [ ] Run `uv lock --all-extras` to regenerate `uv.lock` with all optional dependency groups - [ ] Verify `uv sync --all-extras` installs correctly from the updated lockfile - [ ] Confirm a vulnerability scan (e.g., `uv audit`) can now inspect dev/test dependencies - [ ] Update CI workflow if needed to use `uv sync --all-extras` for dev/test environments - [ ] Run `nox` (all default sessions), fix any errors - [ ] Verify coverage >= 97% via `nox -s coverage_report` ## Definition of Done This issue is complete when: - All subtasks above are completed and checked off. - `uv.lock` includes all optional dependency groups from `pyproject.toml`. - A Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional lines providing relevant details about the implementation. - The commit is pushed to the remote on the branch matching the **Branch** in Metadata exactly. - The commit is submitted as a **pull request** to `master`, reviewed, and **merged** before this issue is marked done. - All nox stages pass. - Coverage >= 97%. --- > **Backlog note:** This issue was discovered during autonomous operation > on milestone v3.7.0. It does not block milestone completion and has been > placed in the backlog for human review and future milestone assignment. --- **Automated by CleverAgents Bot** Supervisor: Test Infrastructure | Agent: ca-new-issue-creator
freemo added this to the v3.7.0 milestone 2026-04-05 20:42:49 +00:00
freemo removed this from the v3.7.0 milestone 2026-04-06 23:48:49 +00:00
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.

Blocks
#400 Epic: Post-MVP Security
cleveragents/cleveragents-core
Reference
cleveragents/cleveragents-core#3477
No description provided.