Review feedback, taken as one structural change rather than patches:
the report classified whatever artifacts happened to arrive, so a cell
that timed out or lost its runner simply vanished (two passing cells
read as green and would have closed a live incident), a cancelled run
could still write to the issue, and any resolve-job failure was
reported as "cannot be resolved". Now the matrix is defined once and
published by the resolve job, the report checks every planned cell
against `needs.test.result`, a cell writes a provisional status before
doing anything, `uv lock` records whether it was the thing that failed,
and incomplete runs are their own class that comments on an open
incident instead of rewriting or closing it. Artifacts carry their own
top-level directory and are merged on download, so the layout no longer
depends on how many of them exist.
Smaller corrections from the same review: per-package cutoffs instead
of a global --exclude-newer (a freshly bumped exact pin elsewhere could
otherwise fail the resolution); the since-last-green diff uses the lock
the last green run actually uploaded rather than re-resolving today's
tree at an old cutoff; the issue's reproduce block is the literal
commands the job ran (group strip included) under `uvx uv@<version>`;
per-cell output is size-bounded at the source and the full report goes
to the step summary before any truncation; the flake/deprecation re-runs
key on whether pytest recorded failures rather than on its exit code;
titles say "nothing changed since last green" when that is the case;
bash runs with pipefail everywhere; the group-strip generator follows
include-group and default-groups = "all"; wording says tooling is
preferred at uv.lock, not frozen. The temporary branch trigger is back
for one more end-to-end run.
No-Verification-Needed: CI-only change (workflow + scripts/ci); scripts exercised locally, workflow verified by a branch run
The workflow ran green end to end on the branch (run 31947729778), so
remove the push trigger that exercised it. Also read pyright's error
count rather than its last output line for the informational summary,
and silence its new-version nag.
No-Verification-Needed: CI-only change (workflow trigger + report cosmetics)
The canary relies on `--exclude-newer` leaving locked versions in place
for packages it does not explicitly upgrade, which uv only guarantees
from 0.10 (astral-sh/uv#17721), and on relative cutoffs. Move every
workflow to the same pin so the canary and PR CI cannot disagree about
resolution semantics. 0.10/0.11 carry no breaking changes that touch how
this repo uses uv (frozen syncs, lowest-direct resolution, lock --check).
No-Verification-Needed: CI configuration only; exercised by PR CI itself
Users installing `mcp` get the newest release of every dependency the day
it ships, but PR CI only tests uv.lock and the floors, so an upstream
release that breaks the SDK is currently noticed by users first (median
11 days across past incidents). Running "highest" on every PR was tried
and removed (#1869) because a half-uploaded release turns unrelated PRs
red; the weekly lock-bump PR that replaced it (#1874) never got merged.
This adds a scheduled workflow instead. Every Monday it re-resolves the
runtime closure of mcp[cli,rich] to the newest versions the specifiers
allow (test tooling stays at uv.lock, releases younger than a day are
ignored), runs the suite on ubuntu 3.10/3.14 and windows 3.14, and keeps
a single tracking issue in sync: opened and assigned when newest-allowed
breaks, refreshed while it stays broken, closed once it passes again.
Each cell re-runs failures serially and once more with deprecation
warnings demoted, so the issue says whether users are actually broken or
a dependency merely deprecated something. The report lists what changed
since the last green run, what is held below latest by someone else's
cap, and the exact command to reproduce the resolution.
It never runs on pull requests and never opens a PR adding a ceiling;
the issue carries the runbook and a maintainer decides.
No-Verification-Needed: CI-only change (workflow + scripts/ci); scripts exercised locally, workflow verified by a branch run