-
Type:
Task
-
Resolution: Fixed
-
Priority:
Unknown
-
Affects Version/s: None
-
Component/s: ABX
-
None
-
None
-
Python Drivers
-
Not Needed
-
None
-
None
-
None
-
None
-
None
-
None
Summary
"Run unit tests with minimum dependency versions" is a no-op in CI — uv run re-resolves to highest before pytest starts.
Goal
Make the minimum-dependency-version CI step actually test minimum dependency versions. It currently reinstalls everything at the highest versions before pytest runs, so the step has never validated a single declared floor in any of the four libs.
Blocked by
Nothing. But see "Sequencing" — this must not merge before the floor fixes it exposes.
Current state (verified on main)
Both .github/workflows/_test.yml and .github/workflows/_release.yml end with:
- name: Run unit tests with minimum dependency versions run: | uv sync --python=${PYTHON_VERSION} --resolution=lowest-direct just unit_tests
Every just test recipe is uv run pytest .... uv run re-syncs the project environment from the lockfile, and because the lockfile was written under a different resolution mode it discards the lowest-direct install entirely. uv states this outright:
Ignoring existing lockfile due to change in resolution mode: `lowest-direct` vs. `highest`
Measured in libs/langchain-mongodb-deepagents-vfs on Python 3.11:
| Package | After uv sync --resolution=lowest-direct | What pytest actually ran against |
|---|---|---|
| deepagents | 0.6.0 | |
| tiktoken | 0.8.0 | |
| pydantic | 2.13.0 | |
| wcmatch | 10.1 |
The step therefore runs the same highest-version suite twice, in both the PR test workflow and the release workflow, for all four libs.
Fix
Prevent uv run from re-syncing, e.g.:
uv sync --python=${PYTHON_VERSION} --resolution=lowest-direct
uv run --no-sync pytest tests/unit_tests
--no-sync was verified to preserve the lowest-direct environment. Note this cannot simply call just unit_tests unless the recipe itself is parameterized, since the recipe hardcodes uv run.
Sequencing (important)
This change turns on a test that has never run. Landing it alone will immediately red the CI of libs whose floors are wrong. Verified consequences at true minimum versions on Python 3.11:
- langchain-mongodb — 12 failures in tests/unit_tests/test_cache.py (see linked ticket; langchain-core floor too low)
- langchain-mongodb-deepagents-vfs — pytest INTERNALERROR, 0 tests collected (see linked ticket; pytest-asyncio floor too low)
- langgraph-checkpoint-mongodb / langgraph-store-mongodb — not verified locally; their unit tests require a live MongoDB, which CI provides. Must be confirmed in CI before this lands.
Land the floor fixes first, then this.
Acceptance criteria
- The minimum-version step demonstrably installs and tests floor versions — verifiable by printing resolved versions in the step output, so a future regression is visible in the log rather than silent.
- CI is green for all four libs with the step actually running.
Notes
- This is why the pydantic/Python 3.14 and native-wheel floor problems went unnoticed: the one job designed to catch exactly this class of bug was inert.
- Consider printing uv pip list (or a short subset) in the step so "minimum versions" is auditable from the CI log.