[fork-main green] Fix pre-existing uv.lock drift blocking Python test install (greens uv-lock-check + e2e; deeper v0.18.2 merge-corruption tracked separately) - #262
Merged
Conversation
…ne -> green main Head-of-main CI is red on `Check uv.lock / uv lock --check`, all 8 `Python tests / Run tests slice N/8`, and `Python tests / e2e`. Root cause is a uv.lock <-> pyproject.toml inconsistency (not a test-logic failure): every slice and e2e install via `uv sync --locked`, which hard-fails on a stale lockfile. Two stale entries, both pre-dating the five fork-ship merges (#257-#261, none of which touched pyproject.toml/uv.lock): 1. pytest-timeout==2.4.0 - the fork's pytest addopts use `--timeout=30 --timeout-method=thread` (needs the plugin); PR #248 declared it in the `dev` extra, but the v0.18.2 upstream merge (ba510aa) dropped that declaration while keeping the addopts and the lock entry. 2. A vestigial `{ name = "pillow", marker = "extra == 'vision'" }` line in uv.lock, left over from Pillow's promotion to a core dependency (`vision = []`). Fix: re-declare pytest-timeout==2.4.0 in the dev extra (reverts the merge drop; the existing lock entry is already correct) and regenerate uv.lock to drop the stale pillow vision-marker line. Net: +1 pyproject dep, -1 uv.lock line. Verified locally: `uv lock --check` clean; `uv sync --locked --python 3.11 --extra dev` installs; pytest_timeout plugin registered and a trivial test passes under the repo addopts (1 passed) - i.e. `--timeout` is accepted instead of aborting on an unknown arg. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
OmarB97
added a commit
that referenced
this pull request
Jul 20, 2026
…ne -> green main (#262) Head-of-main CI is red on `Check uv.lock / uv lock --check`, all 8 `Python tests / Run tests slice N/8`, and `Python tests / e2e`. Root cause is a uv.lock <-> pyproject.toml inconsistency (not a test-logic failure): every slice and e2e install via `uv sync --locked`, which hard-fails on a stale lockfile. Two stale entries, both pre-dating the five fork-ship merges (#257-#261, none of which touched pyproject.toml/uv.lock): 1. pytest-timeout==2.4.0 - the fork's pytest addopts use `--timeout=30 --timeout-method=thread` (needs the plugin); PR #248 declared it in the `dev` extra, but the v0.18.2 upstream merge (ba510aa) dropped that declaration while keeping the addopts and the lock entry. 2. A vestigial `{ name = "pillow", marker = "extra == 'vision'" }` line in uv.lock, left over from Pillow's promotion to a core dependency (`vision = []`). Fix: re-declare pytest-timeout==2.4.0 in the dev extra (reverts the merge drop; the existing lock entry is already correct) and regenerate uv.lock to drop the stale pillow vision-marker line. Net: +1 pyproject dep, -1 uv.lock line. Verified locally: `uv lock --check` clean; `uv sync --locked --python 3.11 --extra dev` installs; pytest_timeout plugin registered and a trivial test passes under the repo addopts (1 passed) - i.e. `--timeout` is accepted instead of aborting on an unknown arg. Co-authored-by: Omar Baradei <omar@kostudios.io> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
OmarB97
added a commit
that referenced
this pull request
Aug 2, 2026
…262 (#286) `uv lock --check` fails on pristine `main` itself, so every PR opened against this fork inherits a red `Check uv.lock` — including PRs that touch zero Python files (e.g. #284, a desktop-only TypeScript change). Root cause is NOT an upstream merge dropping a lock update. Fork PR #262 (f78ed1f, 2026-07-10) re-declared `pytest-timeout==2.4.0` in the `dev` extra of pyproject.toml, but the commit that landed on main contains only: pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Its description states it regenerated uv.lock ("Net: +1 pyproject dep, -1 uv.lock line") and that `uv lock --check` was verified clean locally — but the lockfile half of that change never reached the merged commit. `git log -S pytest-timeout -- uv.lock` confirms nothing has re-added the entry since upstream removed it in 2f9d187 (2026-06-10). So main has been red on this check for three weeks. Fix: `uv lock` (no --upgrade). The result is purely additive — +14 lines, 0 deletions, 233 -> 234 packages, `revision = 3` unchanged: * `[package.optional-dependencies] dev` gains `pytest-timeout` * `[package.metadata] requires-dist` gains the `extra == 'dev'` pin * a new `[[package]] pytest-timeout 2.4.0` block with sdist + wheel hashes No existing pin moved, so nothing the repo pins deliberately was bumped (Dependency Pinning Policy, AGENTS.md). Blast radius is wider than the uv.lock check alone: `tests.yml` (both jobs), `e2e-desktop.yml` and `docker.yml` all install via `uv sync --locked`, which hard-fails the same way. On #284 the Desktop E2E job fails at "Install Python dependencies" with `error: The lockfile at uv.lock needs to be updated, but --locked was provided.` — Playwright never ran. The Python shards only escape it there because path filters skip them on a TypeScript-only PR. Verified on macOS 15 (darwin 25.6.0, uv 0.11.6, CPython 3.13.13): * `uv lock --check` — clean (was exit 1 on this same tree before) * `uv sync --locked --python 3.11 --extra dev` — installs, pytest-timeout 2.4.0 * plugin registers under the repo's pytest config (`--timeout` in `pytest --help`) * `@pytest.mark.timeout(1)` on a 30s sleep aborts at 1.02s with `Failed: Timeout (>1.0s) from pytest-timeout` — i.e. the dep is live, not vestigial Co-authored-by: Omar Baradei <omar@kostudios.io> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR. Fixes the pre-existing
uv.lockdrift that reddenedCheck uv.lock / uv lock --checkand blocked dependency install for every Python test slice + e2e. On this PR's CI,Check uv.lockandPython tests / e2enow pass (both failed on HEAD), and the slices now actually run. This is a necessary first step but NOT sufficient for green main — unblocking install surfaces a large, separate, pre-existing body of v0.18.2 merge-corruption failures (see "Remaining, out of scope").Root cause (this PR).
uv.lockhad two stale entries vspyproject.toml: (1)pytest-timeout==2.4.0— the fork's pytest addopts use--timeout=30 --timeout-method=thread(upstream has neither), so the plugin is required; PR #248 declared it in thedevextra, but the v0.18.2 upstream merge (ba510aab2) dropped that declaration while keeping the addopts and the lock entry. (2) A vestigial{ name = "pillow", marker = "extra == 'vision'" }line, left over from Pillow's promotion to a core dependency (vision = []). Every slice + e2e installs viauv sync --locked, which hard-fails on a stale lock — so one drift reddened uv-lock-check, all 8 slices, and e2e at the install step.Fix. Restore
pytest-timeout==2.4.0to thedevextra (reverts the merge drop; the existing lock entry is already correct, so no churn for it) and regenerateuv.lockto drop the stale pillow vision-marker line. Net: +1pyproject.tomldep, −1uv.lockline.Verified. Locally:
uv lock --checkclean;uv sync --locked --python 3.11 --extra devinstalls;pytest_timeoutplugin registered and a trivial test passes under the repo addopts (--timeoutnow accepted). On CI (this PR):Check uv.lock / uv lock --checkandPython tests / e2epass.This debt pre-dates the five fork-ship merges.
pyproject.tomlanduv.lockare byte-identical between0d1f2b5ea(#256, pre-sweep) and990dfff20(#261, HEAD); none of #257–#261 touched either file. #256 itself was already red.Remaining — OUT OF SCOPE for this PR (separate pre-existing debt from the v0.18.2 merge, not the five merges). With install unblocked, CI now shows ~450 failing Python tests and 25 renderer/vitest failures, dominated by dropped fork symbols / broken imports / signature drift — e.g.
approx_request_tokens(agent/conversation_loop.py),_dflash_first_chunk_timeout(agent/chat_completion_helpers.py),foreground_generation(run_agent.py),effective_current_provider(tui_gateway), thewindows_detach_flags_without_breakawayimport, andSessionDB.surfaced_session_count(cwd_prefix=…). This is the same "dropped fork symbols/columns/tests" class#256began repairing and left incomplete; the implicated files were untouched by #257–#261. It needs a dedicated merge-repair effort, tracked separately from this lockfile fix.