Skip to content

Fix uv-tool exact-pin self-update and ship 0.7.12 - #64

Merged
Dandre126 merged 7 commits into
mainfrom
cursor/uv-tool-exact-pin-update-75d5
Aug 23, 2026
Merged

Fix uv-tool exact-pin self-update and ship 0.7.12#64
Dandre126 merged 7 commits into
mainfrom
cursor/uv-tool-exact-pin-update-75d5

Conversation

@Dandre126

@Dandre126 Dandre126 commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Summary

dyro update fails for uv-managed installs that were pinned with an exact specifier.

uv tool install dyro==0.7.11 --force stores specifier = "==0.7.11" in the tool receipt. The old plan then ran uv tool upgrade --default-index <PYPI> --no-config dyro==0.7.12, which uv rejects as unsatisfiable (both ==0.7.11 and ==0.7.12). Manual uv tool install dyro==X --force already works.

Fix

build_update_plan (src/dyro/updates.py:build_update_plan) now uses:

uv tool install --force --default-index https://pypi.org/simple --no-config dyro==<version>

Official PyPI and --no-config stay required. pipx, pip, and uv-pip paths are unchanged.

Tests (uv-tool)

tests/test_updates.py:

  • uv-managed argv is tool install --force, not upgrade
  • prefix detection still holds (unix, nested, Windows-style)
  • pipx / pip / uv-pip plans still use their previous commands
  • missing uv still fails closed
  • CHANGELOG 0.7.12 recovery documents that same planner-safe command (not the bare pin-only form alone) plus dyro integration sync for asset version 2

Residual skill policy (same 0.7.12)

src/dyro/integrations/assets/dyro-line-family/SKILL.md and packaged agents/openai.yaml:

  • Preflight before Apply. --yes is illegal until all four preflight steps pass.
  • Explicit spawn / merge / sync ask (slash or harness) must run the matching --yes command in the same turn after preflight. Wording is Run only the matching verb (old print-don't-run phrases are gone).
  • Preflight-only remains for a preflight / dry-run ask, or when the user ran dyro --dry-run line … themselves. CLI is unchanged.
  • Doctor blocking-FAIL rules are unchanged. Never invent --push. No git merge / switch by hand.
  • On apply success, report what ran. On preflight fail, User action is still only doctor or the failed dry-run.

dyro-control-plane / dyro-executor: if /dyro-line-family already completed preflight this turn for an explicit mutation ask, those seats must not block the matching line … --yes. Line-family is the writer. Default forbid stays when line-family is not the active ask.

LINE_FAMILY_ASSET_VERSION is 2 so installed mirrors sync.

Release 0.7.12

Version bump in pyproject.toml, uv.lock, skill client.version, version tests, and the release-gate test tag.

CHANGELOG ## 0.7.12 notes the exact-pin fix and the line-family apply-after-preflight policy. Users already pinned with uv tool install dyro==… should recover with the same planner-safe command as build_update_plan:

uv tool install --force --default-index https://pypi.org/simple --no-config dyro==0.7.12

After that, dyro update works. If hosted slash mirrors still serve the old line-family text, run dyro integration sync (or a skill refresh) so they pick up asset version 2.

Note

Leave this PR open/unmerged. No customer or company names.

Open in Web Open in Cursor 

@vercel

vercel Bot commented Aug 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
dyro Error Error Aug 23, 2026 1:14am
dyro-engineering-flow Error Error Aug 23, 2026 1:14am

uv tool upgrade cannot satisfy dyro==<new> when the receipt already
pins specifier==<old>. Plan uv-managed updates with
uv tool install --force so the pin is replaced.
Ship the uv-tool exact-pin update fix. Users already pinned with
uv tool install dyro==… should run one last
uv tool install dyro==0.7.12 --force, then dyro update works.
When the user asked to spawn, merge, or sync, /dyro-line-family must
run the matching --yes command after preflight. Stay preflight-only
for a dry-run ask. Never invent --push.
Dandre126 and others added 3 commits August 23, 2026 01:13
Put Preflight before Apply. --yes is illegal until all four preflight
steps pass. Run only the matching verb after an explicit spawn|merge|sync
ask. Control-plane and executor must not block that same-turn --yes;
default forbid stays when line-family is not the active ask.

Co-authored-by: Dandre Yang <[email protected]>
Assert Print only / Do not run that command / 不要执行 / Never execute
the mutation are gone, Run only the matching verb is present, and
Preflight appears before Apply in the packaged skill text.

Co-authored-by: Dandre Yang <[email protected]>
Document the full build_update_plan command with official simple index
and --no-config, not bare uv tool install dyro==0.7.12 --force alone.
Note dyro integration sync so hosted slash mirrors pick up asset
version 2.

Co-authored-by: Dandre Yang <[email protected]>
Executor SKILL.md and CHANGELOG wrap those sentences; assert against
whitespace-normalized text.

Co-authored-by: Dandre Yang <[email protected]>
@Dandre126
Dandre126 marked this pull request as ready for review August 23, 2026 01:25
@Dandre126
Dandre126 merged commit f321e39 into main Aug 23, 2026
9 of 11 checks passed
@Dandre126
Dandre126 deleted the cursor/uv-tool-exact-pin-update-75d5 branch August 23, 2026 01:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant