Observed behavior
ContextualWisdomLab/.github's opencode-review-dispatch.yml coverage-evidence job failed for ContextualWisdomLab/RankWeave PR #36 (run 32571503654, 2026-08-22T11:53:34Z) with:
##[error]Could not materialize base Python locks: uv export failed for tracked base lock uv.lock: error: Required uv version `==0.11.29` does not match the running version `0.12.1`. Update `uv` by running `uv self update 0.11.29`.
RankWeave's pyproject.toml pins [tool.uv] required-version = "==0.11.29" intentionally, for build reproducibility. This is not a defect in RankWeave's PR — the diff under review didn't touch the uv pin at all. The central runner simply has a newer uv (0.12.1) installed than the target repo's own lockfile requires, so uv export refuses to run.
I independently reproduced the same failure class locally earlier this session: my local Homebrew uv was 0.12.0/0.12.1 at different points, also mismatched against RankWeave's 0.11.29 pin — I worked around it locally with mise install uv@0.11.29, but the central CI runner has no equivalent per-repo version resolution.
Why this matters
This is the same shape of bug as the EBADDEVENGINES npm devEngines.packageManager mismatch found earlier this session for JS-repo coverage-evidence runs (a fixed central tool version colliding with a target repo's own pinned tooling version) — just for Python/uv instead of npm. Any repo in the org that pins an exact uv required-version (a reasonable reproducibility practice, not a misconfiguration) can hit this the moment the central runner's installed uv drifts past that pin, and it will silently block that repo's OpenCode review approval with a message that looks like a real coverage failure rather than an infra mismatch — exactly what happened here: a real, current-head CHANGES_REQUESTED review citing "coverage evidence did not pass," when the actual cause was invisible to the PR author without digging into the central run's own log.
Suggested direction
The central coverage-evidence job (in opencode-review-dispatch.yml, scripts/ci/materialize_base_python_requirements.py or wherever the uv invocation lives) should read each target repo's own [tool.uv] required-version (if present) and install/select that exact uv version for that repo's coverage run, the same way per-repo Python version pins are presumably already respected — rather than relying on one fixed uv version baked into the runner image/setup step that drifts independently of what repos actually declare.
Cross-reference
Discovered while working ContextualWisdomLab/RankWeave PR #36 through the review→fix→merge loop this session; dismissed the resulting stale-looking-but-actually-infra-caused CHANGES_REQUESTED review on that PR with this same root-cause evidence rather than treating it as a real PR defect.
Observed behavior
ContextualWisdomLab/.github'sopencode-review-dispatch.ymlcoverage-evidencejob failed forContextualWisdomLab/RankWeavePR #36 (run32571503654, 2026-08-22T11:53:34Z) with:RankWeave's
pyproject.tomlpins[tool.uv] required-version = "==0.11.29"intentionally, for build reproducibility. This is not a defect in RankWeave's PR — the diff under review didn't touch the uv pin at all. The central runner simply has a neweruv(0.12.1) installed than the target repo's own lockfile requires, souv exportrefuses to run.I independently reproduced the same failure class locally earlier this session: my local Homebrew
uvwas0.12.0/0.12.1at different points, also mismatched against RankWeave's0.11.29pin — I worked around it locally withmise install uv@0.11.29, but the central CI runner has no equivalent per-repo version resolution.Why this matters
This is the same shape of bug as the
EBADDEVENGINESnpmdevEngines.packageManagermismatch found earlier this session for JS-repo coverage-evidence runs (a fixed central tool version colliding with a target repo's own pinned tooling version) — just for Python/uv instead of npm. Any repo in the org that pins an exactuvrequired-version(a reasonable reproducibility practice, not a misconfiguration) can hit this the moment the central runner's installeduvdrifts past that pin, and it will silently block that repo's OpenCode review approval with a message that looks like a real coverage failure rather than an infra mismatch — exactly what happened here: a real, current-headCHANGES_REQUESTEDreview citing "coverage evidence did not pass," when the actual cause was invisible to the PR author without digging into the central run's own log.Suggested direction
The central
coverage-evidencejob (inopencode-review-dispatch.yml,scripts/ci/materialize_base_python_requirements.pyor wherever the uv invocation lives) should read each target repo's own[tool.uv] required-version(if present) and install/select that exactuvversion for that repo's coverage run, the same way per-repo Python version pins are presumably already respected — rather than relying on one fixeduvversion baked into the runner image/setup step that drifts independently of what repos actually declare.Cross-reference
Discovered while working
ContextualWisdomLab/RankWeavePR #36 through the review→fix→merge loop this session; dismissed the resulting stale-looking-but-actually-infra-causedCHANGES_REQUESTEDreview on that PR with this same root-cause evidence rather than treating it as a real PR defect.