Skip to content

Conversation

@maxisbey
Copy link
Contributor

This PR fixes the CI dependency resolution testing to properly test against the highest available dependency versions, which would have caught the pydantic 2.12 breaking change before it reached main.

Motivation and Context

The CI test matrix includes a "highest" resolution test intended to catch compatibility issues with newer dependency versions. However, it was using the --frozen flag, which prevented uv from resolving to the highest available versions. Instead, it just used whatever was locked in uv.lock from main, defeating the purpose of testing against latest versions.

This meant breaking changes in newer dependency versions (like pydantic 2.12's FieldInfo refactor) that were compatible with our version constraints but not yet in the lockfile would not be caught by CI.

How Has This Been Tested?

The changes are to CI configuration only. The fix:

  • Uses --resolution highest during uv sync for the highest resolution test
  • Uses --resolution lowest-direct for the lowest resolution test (unchanged behavior)
  • Simplifies uv run to use --frozen --no-sync since resolution already happened during sync
  • Removes the now-unnecessary UV_RESOLUTION environment variable

This ensures the highest test matrix actually resolves to and tests against the highest available versions within our constraints.

Breaking Changes

None. This is a CI configuration improvement that makes the tests work as originally intended.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

This fix is related to the pydantic 2.12 compatibility issue discovered in the investigation. With this change, future dependency updates that introduce breaking changes will be caught by the "highest" resolution CI tests before merging to main.

The fix clarifies the intent of each step:

  1. uv sync with resolution flags → resolve and install dependencies
  2. uv run --frozen → run tests with what was synced (no re-resolution)

@maxisbey maxisbey force-pushed the fix-ci-highest-resolution-testing branch from 4504ab8 to ad108cd Compare November 10, 2025 20:35
The dependency resolution tests were using --frozen flag (for highest)
or no upgrade flag (for lowest-direct), which meant both tests just
used whatever was locked in uv.lock from the main branch rather than
actually resolving to the target versions.

This caused the CI to miss breaking changes in new dependency versions
(like pydantic 2.12) that were compatible with version constraints but
not yet in the lockfile.

Changes:
- Use --upgrade --resolution highest for the highest resolution test
- Use --upgrade --resolution lowest-direct for the lowest resolution test
  (both need --upgrade to ignore lockfile and re-resolve)
- Simplify test execution to use --frozen --no-sync since
  resolution already happened during uv sync
- Remove redundant UV_RESOLUTION env var (command-line flags suffice)

This ensures both tests actually resolve to their intended versions
and catch compatibility issues before they reach main.
@maxisbey maxisbey force-pushed the fix-ci-highest-resolution-testing branch from ad108cd to 28cefeb Compare November 10, 2025 20:41
@maxisbey
Copy link
Contributor Author

The tests are currently failing, which is intended. This PR will fix the tests: #1607

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants