GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Fix uv revert restoring a stale specifier (#840) by mikolalysenko · Pull Request #841 · SocketDev/socket-patch

Conversation

@mikolalysenko

@mikolalysenko Mikola Lysenko (mikolalysenko) commented Oct 5, 2026 •
edited by cursor Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Collaborator

LLM Description written by Claude Code:claude-opus-5-5

Fixes #840

This builds on #822, which has merged. The diff against main is only this PR's change.

Summary

Say six is vendored in a uv project and the user changes six's own requirement: uv add "six>=1.16", or a hand edit plus uv lock. Before this change, vendor --revert, remove and rollback all wrote the old specifier = "==1.16.0" back into uv.lock. They exited 0 with status: "success", and then uv sync --locked failed with "The lockfile at uv.lock needs to be updated".

Now the revert restores the specifier pyproject.toml declares at revert time. If uv's spelling of that specifier can't be derived, the revert keeps both files wired and warns vendor_lock_entry_drifted. It never reports a clean revert on a pair it just broke.

Root cause

Vendored wiring rewrites the root unit's requires-dist / requires-dev / [manifest] constraints entries from { name, specifier } to { name, path }. That matches uv, which drops the specifier for a path source. The old entry is saved as the record's original. Because the lock no longer carries a specifier, the user's later declaration edit leaves uv.lock byte-identical, so no drift can ever signal it. revert_uv then wrote the recorded original back verbatim.

Change

  • respell_lock_specifier (patch/redirect/upstream/uv.rs): a new pub(crate) entry point built on the hosted unwind's existing declarations / spec_clauses derivation, so hosted and vendored read declarations the same way. Given the recorded specifier, it returns one of three results:

    • keep: the declaration's clauses still equal the recorded ones (order and spacing ignored), nothing declares the name, or the declaration isn't a plain version range. In the last case the recorded spelling was uv's own, so this matches the old behaviour.
    • respell: write a single clause, or drop the specifier for an unconstrained requirement.
    • error: the specifier isn't derivable, for example a multi-clause range or several conflicting declarations.
  • respell_original (vendor/pypi_uv.rs): before revert_uv restores a uv_lock_requires_dist, uv_lock_requires_dev or uv_lock_manifest_constraints record, it rewrites each of the package's entries in the recorded original:

    • each entry follows the declaration it mirrors, picked by the entry's own marker (its extra and environment marker) through hosted's declared_clauses; declarations that still disagree count as drift;
    • a group follows [dependency-groups] (and [tool.uv] dev-dependencies for dev);
    • constraints follow constraint-dependencies / build-constraint-dependencies.

    The respelled original then goes through the existing restore and convergence paths unchanged. An error becomes vendor_lock_entry_drifted, so Fix uv vendored revert half-reverting after a relock (#806, #821) #822's pair gate keeps both files.

  • Multi-clause edits fail closed on purpose. uv's clause order differs between releases: uv 0.8.17 writes attrs>=20,<30,!=21.1.0 as >=20,!=21.1.0,<30, ordered by version. A path source leaves no spelling in the lock to copy. So even a sibling entry is no proof of how this edit would be spelled.

    • The hosted SpecStyle candidates (lexicographic or declaration order) can't express version order. They were deliberately not reused here.
    • The same latent gap in hosted unwind is noted below as a follow-up.
  • Docs: docs/testing/uv-compatibility.md describes the behaviour.

Test evidence (red → green)

Test Covers Without fix (58ef065) With fix
pypi_uv::tests::revert_respells_an_edited_requires_dist_specifier #840, dependencies (>=1.15) fail (stale ==1.16.0) pass
pypi_uv::tests::revert_respells_an_edited_requires_dev_specifier #840, PEP 735 dev group (==1.16.*) fail pass
pypi_uv::tests::revert_drops_the_specifier_of_an_unconstrained_declaration #840, bare six fail pass
pypi_uv::tests::revert_respells_an_edited_manifest_constraint #840, constraint-dependencies fail pass
pypi_uv::tests::revert_respells_only_the_edited_extra_element #840, package in deps plus an extra fail pass
pypi_uv::tests::revert_keeps_the_pair_when_an_edited_specifier_is_not_derivable #840, multi-clause edit: drift, both files kept fail (stale specifier, success) pass
pypi_uv::tests::revert_keeps_the_pair_on_a_multi_clause_edit_despite_sibling_evidence same, with a multi-clause sibling in the lock fail pass
pypi_uv::tests::revert_respells_the_entry_whose_marker_mirrors_the_edit Bugbot: marker-split pair, only one edited fail on 005404c (stale pin kept) pass
pypi_uv::tests::revert_keeps_the_pair_when_group_declarations_disagree Bugbot: include-group still carries the old pin: drift fail on 005404c pass
pypi_uv::tests::revert_respells_past_an_unreadable_sibling_declaration Bugbot: === extra beside an edited pin fail on 9983ac8 pass
pypi_uv::tests::revert_does_not_converge_on_a_lookalike_dependency_entry Bugbot: a { name = "six" } lookalike fakes convergence fail on 9983ac8 pass
pypi_uv::tests::revert_keeps_the_recorded_specifier_when_the_declaration_agrees control: re-spaced and marker-only edit stays byte-exact pass pass
e2e_vendor_pypi_build::uv_vendor_revert_after_declaration_edit (real uv: vendor → uv add "six>=1.16" → vendor --revert → uv lock --check) #840 fail (The lockfile at uv.lock needs to be updated) pass
e2e_vendor_pypi_build::uv_vendor_revert_after_dev_group_declaration_edit (same, uv add --dev) #840, dev group fail (same) pass

The red e2e runs used 58ef065's pypi_uv.rs (pre-fix revert plus the new tests).

Local gates (head 767d6e9, rust 1.93.1 per rust-toolchain.toml)

  • cargo clippy --workspace --all-features -- -D warnings: clean.
  • cargo fmt: my hunks are fmt-clean. This rustfmt also reformats about 130 untouched files on main; those reformats were reverted rather than included.
  • cargo test -p socket-patch-core --lib vendor::pypi_uv: 106/106 pass.
  • SOCKET_PATCH_UV_E2E_REQUIRED=1 cargo test -p socket-patch-cli --all-features --test e2e_vendor_pypi_build -- --include-ignored (uv 0.8.17): 27/27 pass, with no skips.
  • cargo test -p socket-patch-core --all-features:
    • lib: 4857/4861 pass. The 4 failures are the write-permission tests in files this PR doesn't touch (copy_tree, vlt_heal, pypi_poetry, pypi_requirements). They expect a read-only path to refuse a write, which can't happen as root, and this sandbox runs as root. Fix uv vendored revert half-reverting after a relock (#806, #821) #822 documented the same four.
    • integration targets (--test '*'): 550/550 pass.
  • The npm/pypi/gem wrappers are unaffected (Rust-only change).

Per-issue checklist

  • Vendored uv revert writes the pre-vendor specifier back into uv.lock after the user changes the vendored package's version spec, so uv sync --locked fails (vendor --revert / remove / rollback exit 0) #840: vendor --revert after uv add, dependencies: unit revert_respells_an_edited_requires_dist_specifier + e2e uv_vendor_revert_after_declaration_edit
  • Vendored uv revert writes the pre-vendor specifier back into uv.lock after the user changes the vendored package's version spec, so uv sync --locked fails (vendor --revert / remove / rollback exit 0) #840: dev group: unit revert_respells_an_edited_requires_dev_specifier + e2e uv_vendor_revert_after_dev_group_declaration_edit
  • Vendored uv revert writes the pre-vendor specifier back into uv.lock after the user changes the vendored package's version spec, so uv sync --locked fails (vendor --revert / remove / rollback exit 0) #840: other specifier shapes (>=1.15, ==1.16.*, unconstrained): unit tests above
  • Vendored uv revert writes the pre-vendor specifier back into uv.lock after the user changes the vendored package's version spec, so uv sync --locked fails (vendor --revert / remove / rollback exit 0) #840: remove / rollback / GC prune: same revert_pypi → revert_uv path
  • Vendored uv revert writes the pre-vendor specifier back into uv.lock after the user changes the vendored package's version spec, so uv sync --locked fails (vendor --revert / remove / rollback exit 0) #840: multi-clause (six>=1.16,<1.17, the issue's main repro): the revert now keeps both files with vendor_lock_entry_drifted instead of breaking --locked. This is one of the two outcomes the issue accepts. Re-deriving it would need uv's per-release clause order (see follow-ups).

Ported fix

  • 02735f5 ports Fix vex alias tests broken by store-copy merge #851 unchanged: a tests-only fix for two commands::vex_consumed tests that are red on main since Fix npm store copies missed by agent apply and vex (#601, #603) #605 (4646693). It no-ops once Fix vex alias tests broken by store-copy merge #851 merges.

Follow-ups

  • Hosted unwind (restore_requirement_array) learns multi-clause spelling from SpecStyle's lexicographic or declaration-order candidates. uv 0.8.17 orders clauses by version, so a learned style can be wrong when the declaration order happens to agree with version order. That's not changed here.

🤖 Generated with Claude Code


Note

Medium Risk
Changes uv vendor revert lockfile surgery and specifier derivation; incorrect respelling could break --locked sync, but ambiguous cases fail closed with warnings.

Overview
Fixes #840: after vendoring a uv dependency, editing its requirement in pyproject.toml (e.g. uv add "six>=1.16") leaves uv.lock unchanged because path sources drop specifiers. Revert used to write the stale recorded specifier back, so revert looked successful but uv sync --locked failed.

Revert now re-derives requires-dist, requires-dev, and [manifest] constraints entries from current declarations via new respell_lock_specifier / respell_original, matching entries by marker/extra like hosted unwind. Unchanged declarations still revert byte-for-byte; unconstrained deps drop the specifier; multi-clause or ambiguous edits fail closed (keep wired pair, vendor_lock_entry_drifted). requires-dist convergence no longer treats a lookalike { name = "six" } elsewhere in the lock as already restored.

Adds unit and e2e coverage plus docs in uv-compatibility.md. vex_consumed npm hosted tests are adjusted for post-#605 resolver behavior (alias expansion still exercised on an alias-free installed set).

Reviewed by Cursor Bugbot for commit 02735f5. Configure here.


Generated by Claude Code

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Claude (claude) added 7 commits October 5, 2026 03:30
@claude
Start fix for #806, #821
ac0a657
Assisted-by: Claude Code:claude-opus-5-5
@claude
Unwind uv vendoring after a relock
c35bf96
After vendoring, an ordinary uv relock (`uv add --dev x`, `uv add y`)
re-serializes the lock arrays that hold our element: the dev group's
requires-dev line and `[manifest] overrides`. Revert matched those
arrays by their exact recorded text, so it saw drift and kept
uv.lock wired, but still reverted pyproject.toml. The pair then
failed `uv sync --locked` while `vendor --revert` reported success.

Revert now finds our unchanged element inside the live array under
the same key and restores or removes just that element, rendering
the array the way uv writes it. A pair gate also writes neither
file when any record is genuinely drift-kept, so pyproject.toml and
uv.lock always stay consistent.

Fixes #806, #821.

Assisted-by: Claude Code:claude-opus-5-5
@claude
Test uv revert after a relock with real uv
bb174d2
Vendor six, run the uv command that re-serializes the lock array
around our element (`uv add --dev zipp` for a dev group, `uv add
idna` beside user overrides), then revert. Both files must be
unwired with no drift warning, and `uv lock --check` must pass.

Refs #806, #821.

Assisted-by: Claude Code:claude-opus-5-5
@claude
Document uv revert after a relock
f4e9b7b
Refs #806, #821.

Assisted-by: Claude Code:claude-opus-5-5
@claude
Anchor uv array reverts on their key
f9b7cfa
A [manifest] overrides record holds the bare array, and the old
convergence shortcut searched the whole lock for it. When the root
requires-dist happened to match the user's overrides array, revert
treated our element as already gone, left it in uv.lock and deleted
the artifact it points at. Every whole-array record now reverts
through its own key: an untouched array is restored verbatim,
otherwise just our element is.

Refs #806.

Assisted-by: Claude Code:claude-opus-5-5
@claude
Fail closed when a uv lock array can't be read
77686c4
Revert treated any miss locating a whole-array record as convergence,
including a key spelled differently or an unbalanced array. A lock
that still routed through the vendored wheel could then lose the
wheel. Only a key or section that is provably absent now counts as
converged. Anything unreadable is drift, which keeps both files and
the artifact.

Refs #806, #821.

Assisted-by: Claude Code:claude-opus-5-5
@claude
Start fix for #840
db24440
Assisted-by: Claude Code:claude-opus-5-5
This was referenced Oct 5, 2026
Vendored uv revert writes the pre-vendor specifier back into uv.lock after the user changes the vendored package's version spec, so uv sync --locked fails (vendor --revert / remove / rollback exit 0) #840
Closed
Fix uv vendored revert half-reverting after a relock (#806, #821) #822
Merged
Claude (claude) added 3 commits October 5, 2026 09:37
@claude
Test uv revert after a declaration edit
58ef065
A vendored uv revert writes back the lock specifier it recorded when
vendoring. If the user changed the package's requirement in
pyproject.toml in the meantime, the lock no longer matches and
`uv sync --locked` fails. These tests pin the expected behaviour
for requires-dist, requires-dev groups and [manifest] constraints.

Refs #840

Assisted-by: Claude Code:claude-opus-5-5
@claude
Re-derive uv specifiers on vendored revert
da11b9c
When six is vendored, uv.lock records it as a path source with no
version specifier. If the user then changes six's requirement in
pyproject.toml (uv add "six>=1.16"), the lock stays byte-identical,
and vendor --revert, remove and rollback wrote back the specifier
recorded at vendoring time. The revert reported success, but
`uv sync --locked` then failed.

The revert now writes the specifier pyproject.toml declares now, using
the same derivation the hosted unwind uses. This covers requires-dist
(each extra separately), requires-dev groups and [manifest]
constraints. An unchanged declaration still restores byte-for-byte.
When uv's spelling can't be derived, such as a multi-clause range whose
clause order varies between uv releases, the revert keeps both files
and warns vendor_lock_entry_drifted instead of breaking the lock.

Fixes #840

Assisted-by: Claude Code:claude-opus-5-5
@claude
Document uv revert after a declaration edit
767d6e9
Refs #840

Assisted-by: Claude Code:claude-opus-5-5
@mikolalysenko
Mikola Lysenko (mikolalysenko) marked this pull request as ready for review October 5, 2026 09:53
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

BugBot review


Generated by Claude Code

cursor[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cursor[bot]
cursor Bot reviewed Oct 5, 2026
View reviewed changes

@cursor cursor Bot left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

[agent] Labeled Ready for review.

  • Head: 767d6e9
  • CI: all checks green on head (488 runs, 0 failing)
  • Bugbot: reviewed 767d6e9, no issues
  • Stacked on Fix uv vendored revert half-reverting after a relock (#806, #821) #822: merge that first.

Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@mikolalysenko Mikola Lysenko (mikolalysenko) added the Ready for review Agent-verified: mergeable, CI green, Bugbot clean — awaiting human review label Oct 5, 2026
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

[burn-down agent] Labeled Ready for review (label from the 10:22 run was missing).

  • Head: 767d6e9; merges cleanly into current main (cfe060d)
  • CI: all checks green on head
  • Bugbot: reviewed 767d6e9, no issues; no open review threads
  • Stacked on Fix uv vendored revert half-reverting after a relock (#806, #821) #822: merge that first.
  • Slack: not announced (Slack send tool unavailable in this run).

Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Mikola Lysenko (mikolalysenko) and others added 2 commits October 5, 2026 07:43
@mikolalysenko
Merge branch 'main' into agent/fix-uv-revert-stale-specifier
f16de37
@claude
Adapt uv specifier re-derivation to main
005404c
#625 on main changed the uv declaration reader to report each
optional-dependencies member's extra. The merge of main into this branch
no longer compiled. Use that reader for requires-dist instead of the
local extras walk. Dev groups now also pick up main's group-name
normalization and include-group expansion.

Refs #840

Assisted-by: Claude Code:claude-opus-5-5
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

[agent] The merge of main into this branch (f16de37) failed to compile. #625 changed declarations() in upstream/uv.rs to return Declaration { spec, extra }, and that turned every build, clippy and e2e job red. 005404c adapts respell_lock_specifier to the new reader: requires-dist now filters on the declaration's own extra, and dev groups pick up the normalization and include-group expansion from main.

Re-verified locally on 005404c:

  • clippy (-D warnings): clean
  • vendor::pypi_uv and upstream::uv unit tests: 131/131 pass
  • uv_hosted and upstream_restore_golden: 49/49 pass
  • e2e_vendor_pypi_build against real uv 0.8.17: 27/27 pass

Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

BugBot review


Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cursor[bot]
cursor Bot reviewed Oct 5, 2026
View reviewed changes

@cursor cursor Bot left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread crates/socket-patch-core/src/patch/redirect/upstream/uv.rs Resolved

Uh oh!

There was an error while loading. Please reload this page.

@claude
Pick the declaration a uv lock entry mirrors
5307d52
When a package is declared twice, for example under two environment
markers, or directly and through an include-group, the revert kept the
recorded specifier whenever any one declaration still matched it. Edit
just one of them and the stale pin came back, with the same broken
`uv sync --locked` as #840.

The revert now picks the declaration by the entry's own marker, as the
hosted unwind does. Declarations that still disagree after that are
treated as drift, and both files are kept.

Refs #840

Assisted-by: Claude Code:claude-opus-5-5
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

BugBot review


Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@claude
Merge main into agent/fix-uv-revert-stale-specifier
9983ac8
#822 landed on main as a squash commit. The conflicts with this
branch's copy of #822's commits are resolved by three-way merging
against #822's head (77686c4), so only this PR's own changes remain on
top of main.

Assisted-by: Claude Code:claude-opus-5-5
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

BugBot review


Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cursor[bot]
cursor Bot reviewed Oct 5, 2026
View reviewed changes

@cursor cursor Bot left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread crates/socket-patch-core/src/patch/redirect/upstream/uv.rs Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread crates/socket-patch-core/src/vendor/pypi_uv.rs Resolved

Uh oh!

There was an error while loading. Please reload this page.

Claude (claude) added 2 commits October 5, 2026 13:01
@claude
Tighten uv revert specifier re-derivation
872bd8c
Two cases Bugbot found on the vendored uv revert:

- A same-name declaration that isn't a plain version range, such as an
  extra pinned with ===, stopped every entry from following its edited
  declaration. Now only the entry whose own declaration is unreadable
  keeps its recorded spelling.
- After a bound was dropped, the restored { name = "six" } element
  also matched another dependency entry in uv.lock, so a drifted wiring
  could pass as already reverted. The check now looks only in the root
  unit's requires-dist array.

Refs #840

Assisted-by: Claude Code:claude-opus-5-5
@claude
Format the uv revert re-derivation changes
c949cec
Assisted-by: Claude Code:claude-opus-5-5
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

BugBot review


Generated by Claude Code

cursor[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cursor[bot]
cursor Bot reviewed Oct 5, 2026
View reviewed changes

@cursor cursor Bot left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stale Bugbot comment from a previous run.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@claude
Port #851: fix vex alias tests broken on main
02735f5
main has been red since #605 (4646693). Two vex_consumed tests from
#738 assumed the name-keyed copy resolver never returns npm-aliased
copies, and #605 taught it to. This ports #851's tests-only fix
unchanged so this PR's coverage and macOS test jobs can go green; it
no-ops once #851 lands on main.

Assisted-by: Claude Code:claude-opus-5-5
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

[agent] coverage and test (macos-latest) failed on this PR because main is red too: 4646693 (#605) fails both. The cause is two commands::vex_consumed tests from #738 that #605's resolver change broke. That code isn't touched by this PR. #851 fixes it (tests only). I've ported its change unchanged as 02735f5, and it no-ops once #851 merges. Locally, cargo test -p socket-patch-cli --lib -- commands::vex_consumed gives 10/10.


Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 5, 2026

Copy link
Copy Markdown
Collaborator Author

BugBot review


Generated by Claude Code

cursor[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Tanmay182003
Tanmay Singla (Tanmay182003) approved these changes Oct 5, 2026
View reviewed changes
cursor[bot]
cursor Bot reviewed Oct 5, 2026
View reviewed changes

@cursor cursor Bot left a comment

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 02735f5. Configure here.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mikolalysenko
Mikola Lysenko (mikolalysenko) merged commit c1e4f2a into main Oct 5, 2026
187 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@mikolalysenko
Mikola Lysenko (mikolalysenko) deleted the agent/fix-uv-revert-stale-specifier branch October 5, 2026 13:39
This was referenced Oct 5, 2026
Fix store-copy fold dropping copy writes (#756, #772) #774
Merged
Hosted uv rollback and remove delete a user-authored override-dependencies = ["<pkg>==<ver>"] pin that hosted mode never added #411
Closed
Vendored uv script lock: after the user changes the vendored package's specifier in the PEP 723 block, vendor --revert / remove / rollback write the stale ==1.16.0 back into <script>.py.lock, so uv run --locked fails (exit 0) #869
Closed
Fix UTF-16 requirements.txt silently skipped (#721) #724
Merged
@mikolalysenko Mikola Lysenko (mikolalysenko) mentioned this pull request Oct 13, 2026
Fix stale specifier on uv script-lock revert (#869) #1458
Merged
1 task done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@cursor cursor[bot] cursor[bot] left review comments
@Tanmay182003 Tanmay Singla (Tanmay182003) Tanmay182003 approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

Ready for review Agent-verified: mergeable, CI green, Bugbot clean — awaiting human review

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Vendored uv revert writes the pre-vendor specifier back into uv.lock after the user changes the vendored package's version spec, so uv sync --locked fails (vendor --revert / remove / rollback exit 0)

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@mikolalysenko @Tanmay182003 @claude
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.