Skip to content

fix(deps): consolidate dependabot uv ecosystem to single workspace root#1777

Closed
jsonmp-k8 wants to merge 1 commit intokagent-dev:mainfrom
jsonmp-k8:fix/dependabot-uv-workspace-config
Closed

fix(deps): consolidate dependabot uv ecosystem to single workspace root#1777
jsonmp-k8 wants to merge 1 commit intokagent-dev:mainfrom
jsonmp-k8:fix/dependabot-uv-workspace-config

Conversation

@jsonmp-k8
Copy link
Copy Markdown
Contributor

Summary

  • replace the per-member directories: list under package-ecosystem: uv with a single /python entry so Dependabot uses the root [tool.uv.workspace] to discover members and refreshes python/uv.lock in the same PR
  • group OpenTelemetry and Google AI Python dependencies so lockstep families land in a single PR
  • add applies-to: version-updates to the Python groups so security updates remain ungrouped
  • ignore semver-major /ui npm bumps so known-breaking major frontend upgrades stop opening standalone PRs

Why

Currently Dependabot opens separate PRs for each workspace member's pyproject.toml without refreshing the root python/uv.lock. Those PRs then fail CI when Docker runs uv sync --locked.

In a uv workspace the lockfile lives only at the workspace root; members have only a pyproject.toml. Dependabot's native uv ecosystem already discovers workspace members through the root [tool.uv.workspace] section, so a single directory: /python entry covers every member and updates the root lockfile alongside any member manifest in the same PR — no separate workflow or write-back step needed.

This replaces #1756, which did the same job via a pull_request_target workflow that ran uv lock and pushed back to Dependabot's branch. The reviewer flagged that handoff as undesirable; this approach removes it entirely while keeping the orthogonal grouping and ignore improvements that PR introduced.

Verification

  • ruby -e 'require "yaml"; YAML.load_file(".github/dependabot.yml")' (parses cleanly)
  • Once merged, the next Dependabot run on a Monday should produce at most one Python PR per group with both python/pyproject.toml (or a member's) and python/uv.lock updated together.

cc @EItanya

The previous configuration listed every uv workspace member as its own
`directories:` entry. Dependabot would then open separate PRs for each
member's pyproject.toml without refreshing the root python/uv.lock,
causing CI to fail later when Docker runs `uv sync --locked`.

In a uv workspace, only the workspace root owns the lockfile; members
have a pyproject.toml only. Dependabot's native uv ecosystem already
discovers members through the root pyproject.toml's
[tool.uv.workspace] section, so a single `directory: /python` entry
covers all members and updates the root lockfile in the same PR.

Also adopt the orthogonal Dependabot improvements that were bundled
into the prior approach:

- Group OpenTelemetry and Google AI dependency families so lockstep
  Python updates land in a single PR instead of fragmenting across
  many.
- Add `applies-to: version-updates` to the python groups so security
  updates remain ungrouped.
- Ignore semver-major /ui npm updates so known-breaking major
  frontend bumps stop opening standalone PRs; minor/patch still flow.

Signed-off-by: Jaison Paul <paul.jaison@gmail.com>
Copilot AI review requested due to automatic review settings April 29, 2026 18:21
@github-actions github-actions Bot added the bug Something isn't working label Apr 29, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the repo’s Dependabot configuration to better align with how uv workspaces manage lockfiles, ensuring Dependabot refreshes python/uv.lock alongside member pyproject.toml updates, while also improving dependency grouping/ignores.

Changes:

  • Switch uv Dependabot config to a single workspace-root directory: /python so workspace-member updates also update the root python/uv.lock.
  • Add Dependabot groups for OpenTelemetry and Google AI Python dependencies, and scope Python grouping to version updates only (applies-to: version-updates).
  • Ignore semver-major npm updates for /ui to suppress known-breaking major frontend upgrade PRs.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@jsonmp-k8 jsonmp-k8 closed this Apr 29, 2026
@jsonmp-k8 jsonmp-k8 deleted the fix/dependabot-uv-workspace-config branch April 29, 2026 18:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants