Complete uvs hardening and prepare for public feedback#4
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9c9cd8510d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| rollback_result = run_uv_uninstall( | ||
| cli_name, quiet=options.get("quiet", False) | ||
| ) |
There was a problem hiding this comment.
Avoid uninstalling existing tools on update registry failures
When this helper is called from uvs update for an already installed tool, a save_registry failure after uv tool install succeeds now runs uv tool uninstall. Since uv has already replaced the previous environment during the install, this rollback deletes the command entirely while the old registry file may remain unchanged; for example, a disk-full or permission error during registry persistence turns a failed update bookkeeping write into loss of the installed tool. Track whether this operation is a fresh install versus an update, and avoid destructive uninstall or restore the prior snapshot for updates.
Useful? React with 👍 / 👎.
What changed
uvlifecycle coverage and a Windows/Linux, Python 3.10–3.13 CI matrixWhy
The earlier prototype and Phase 2 package-generation work established the core adapter, but the remaining lifecycle behavior, integration evidence, repository surface, and public claims needed to be made dependable and internally consistent before inviting outside use.
Impact
A supported single-file Python script now has deterministic snapshot install/update/uninstall behavior, recovery-oriented registry persistence, clearer errors, and documented limits. Newcomers get a reversible trial path and focused ways to report bugs or candid usefulness feedback.
Validation
uv run pytest— 170 passeduv run pytest -m integration -n 0— 1 passed