Links
Problem
CI installs with uv sync, which installs the pinned contents of uv.lock. Users install with uvx, which resolves fresh to the newest version each constraint allows. Only one of those is tested.
CI A real user
uv sync → installs uv.lock uvx → fresh resolve, newest allowed
└─ stayed on mcp 1.x └─ resolved to mcp 2.0.0 → crash on import
Causality, stated precisely. The root cause of #40 was the uncapped mcp dependency. Lockfile-based CI was a detection gap, not the cause. Capping the dependency fixed the bug; this issue closes the detection gap.
Timeline
| Event |
Date |
| mcp 2.0.0 released |
2026-07-28 |
| #40 filed |
2026-07-29 |
| v0.8.2 fix shipped |
2026-07-31 |
The break window was roughly three days. An earlier version of this issue claimed eleven months; that was wrong and conflated the outage with a quiet period in the repo.
An honest limit on the scheduled-job argument
Users reported this within one day. A weekly scheduled check averages 3.5 days and would have been slower than the community. So the case for scheduled fresh-resolution testing is not "it would have caught #40 sooner". It is that it gives detection we control, for breaks subtler than a startup crash that users may never report at all.
| Trigger |
Catches |
| On PR |
breaks we introduce, plus upstream breaks current at that moment |
| On schedule |
silent upstream behaviour changes during quiet periods |
Acceptance criteria
Out of scope
The exact uv invocation and the schedule cadence.
Links
AttributeError: 'Server' object has no attribute 'list_tools') #40docs/audits/2026-08-agent-workflow-audit.md→ Finding 8.github/workflows/ci.ymlProblem
CI installs with
uv sync, which installs the pinned contents ofuv.lock. Users install withuvx, which resolves fresh to the newest version each constraint allows. Only one of those is tested.Causality, stated precisely. The root cause of #40 was the uncapped
mcpdependency. Lockfile-based CI was a detection gap, not the cause. Capping the dependency fixed the bug; this issue closes the detection gap.Timeline
The break window was roughly three days. An earlier version of this issue claimed eleven months; that was wrong and conflated the outage with a quiet period in the repo.
An honest limit on the scheduled-job argument
Users reported this within one day. A weekly scheduled check averages 3.5 days and would have been slower than the community. So the case for scheduled fresh-resolution testing is not "it would have caught #40 sooner". It is that it gives detection we control, for breaks subtler than a startup crash that users may never report at all.
Acceptance criteria
uv.lockOut of scope
The exact
uvinvocation and the schedule cadence.