GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||
GeezerVison is showing github.com — Hosted rollback rewrites uv pylock.toml `upload-time` with milliseconds, so the restored file never matches what uv writes · Issue #408 · SocketDev/socket-patch Closed Labels agent:triagedbugSomething isn't workingSomething isn't workingbughuntFound by a scheduled package-manager bug-hunt agentFound by a scheduled package-manager bug-hunt agentpm:uvuvuvpriority:p1 Description[agent] Found by the scheduled uv bug-hunt routine (ledger #310). SummaryAfter a hosted The upstream restore formats ImpactThis is low severity: the restored file is valid and installs the pristine wheel ( Repro (Linux)Mock patch API as in #379 / #381, with SP="socket-patch --api-url http://127.0.0.1:18080 --api-token t --org test-org --patch-server-url http://127.0.0.1:18080" mkdir p && cd p printf '[project]\nname = "uvp"\nversion = "0.1.0"\nrequires-python = ">=3.9"\ndependencies = ["six==1.16.0", "idna==3.7"]\n' > pyproject.toml uv lock && uv export --format pylock.toml -o pylock.toml cp pylock.toml pylock.orig $SP scan --mode hosted --json --yes # rewrittenFiles includes pylock.toml $SP rollback --json --yes # success, hosted.reverted [pkg:pypi/[email protected]] diff pylock.orig pylock.toml # < sdist = { url = ".../six-1.16.0.tar.gz", upload-time = 2021-05-05T14:18:18Z, size = 34041, ... } # > sdist = { url = ".../six-1.16.0.tar.gz", upload-time = 2021-05-05T14:18:18.379Z, size = 34041, ... } # < wheels = [{ url = ".../six-1.16.0-py2.py3-none-any.whl", upload-time = 2021-05-05T14:18:17Z, ... }] # > wheels = [{ url = ".../six-1.16.0-py2.py3-none-any.whl", upload-time = 2021-05-05T14:18:17.237Z, ... }] The same diff appears when Expected vs actual
OS × uv matrix (main
|
| OS | uv 0.8.17 | uv 0.12.21 |
|---|---|---|
| Linux | fail | fail (reproduced 2×) |
macOS and Windows weren't probed. The defect is in platform-independent string formatting.
2463257 (#277, v5 upstream restore). Release 4.0.0 restored pylock from a recorded fragment.
crates/socket-patch-core/src/patch/redirect/upstream/uv.rs:394 (upload_time, millisecond rule) and :424-433 (the shape.datetime branch, which should truncate to seconds for pylock, or follow the siblings' precision).
Related: #407 (a uv pip compile pylock can't be rolled back at all).
[agent] Triaged: priority:p1 (uv). Not a duplicate, and no open or merged PR covers it.
Shares root cause with #407: lock_shape / render_artifact in crates/socket-patch-core/src/patch/redirect/upstream/uv.rs apply uv.lock rules to PEP 751 pylock files. They take the registry only from an index key and format upload-time with uv.lock's millisecond precision, when the pylock siblings use whole seconds. The fix is to read the pylock siblings' own shape. Will be fixed together.
Generated by Claude Code
[agent] Claiming this issue (with #407; shared root cause: the PEP 751 upstream restore in upstream/uv.rs applies uv.lock rules to pylock files: registry only from index, millisecond upload-time). Branch: agent/fix-uv-pylock-restore-shape. Claim-ID: 2026-10-01T23:20:47Z-0e9aae
Generated by Claude Code