@deepseek-ai/dsh is uninstallable on both latest and next — rc.3 wave shipped dsh-web-app requiring a dsh-client-ui-sidebar-documentpreview@0.1.5-rc.3 leaf that was never published
#7431
Replies: 4 comments
|
The same kind of situation occurred today as well. I hope it can be resolved quickly. 🙏 |
|
Thanks for the detailed registry evidence. I checked the current npm metadata: |
|
Two things this thread does not have yet: a complete audit of the whole 1. Audit: it is exactly one missing package, not a propagation lagI enumerated every
So the rest of the wave is intact; this is a single unpublished leaf. That matters for the fix: re-publishing that one package at Verified again just now: 2. Workaround that keeps you on 0.1.5-rc.2 (no
|
The
|
| time | event |
|---|---|
| 06:23:31 | dsh@0.1.7-alpha.1 published |
| 06:38 | this thread reports alpha ✅ installing and running |
| 15:50:50 | alpha.2 wave starts landing — dsh-session@0.1.7-alpha.2 |
| 15:52:13 | install → npm never converges: 870 error: 'MISSING' blocks, log reached 5.8 MB at ~1500 lines/s, ran >12 min without terminating |
| 16:01:04 | second install → same |
| 16:03:24 | npm i --legacy-peer-deps @deepseek-ai/dsh@0.1.7-alpha.1 → ETARGET: @deepseek-ai/dsh-tool-web@0.1.7-alpha.2 |
| 16:05:00 | dsh-tool-web@0.1.7-alpha.2 published — 96 s after that ETARGET |
| 16:07:45 | install → ETARGET: @deepseek-ai/dsh-host-directory-picker-browse@0.1.7-alpha.2 |
| 16:08:08 | dsh-host-directory-picker-browse@0.1.7-alpha.2 published — 23 s after that ETARGET |
| 16:10:00 | 230/250 of the wave published, 15 still missing |
| 16:12:34 | 245/250 published (5 are not on the 0.1.7 line at all), 0 missing → wave complete |
Two install attempts, two ETARGETs, each on a leaf that landed seconds later. The window is bounded by the publish job's own duration — here 15:50:50Z → ~16:12Z, i.e. ~21 minutes, about 60× the race in §4.
Enumerating the 250 @deepseek-ai/* packages of an installed 0.1.6 tree against the registry shows the wave fills in package-by-package over that whole period:
16:10:00Z 230 published, 15 missing
16:14Z 231 published, 9 missing
16:12:34Z 245 published, 0 missing
Every install attempt inside the window fails on whichever leaf has not landed yet, which is why retrying gives a different missing package each time instead of the same one.
Two additions to the fix list
A. npm does not fail here — it hangs. Under default peer resolution npm emitted 870 error: 'MISSING' blocks and kept retrying for over 12 minutes without terminating or printing anything a user can distinguish from a hang. --legacy-peer-deps failed fast with ETARGET and was the only way to obtain a diagnosis. Worth accounting for in fix #2: the user-visible failure mode is "npm spins forever", not a clean error, so a --dry-run gate is the only thing that converts it into something actionable.
B. The two waves disagree on peer style, which makes the window unsatisfiable in both directions. alpha.1 packages declare peers as ranges, alpha.2 packages as exact pins:
dsh-session-projection@0.1.7-alpha.1 peer @deepseek-ai/dsh-session: ^0.1.7-alpha.1
dsh-session-projection@0.1.7-alpha.2 peer @deepseek-ai/dsh-session: 0.1.7-alpha.2
dsh-experimental-client-ui-agent-team@0.1.7-alpha.2 — all 13 peers exact
A resolver that backtracks to alpha.1 can still satisfy alpha.1's ranges, but anything that picks an alpha.2 package demands exact alpha.2 siblings that may still be uploading. This also makes resolution non-reproducible across tree shapes: at 16:06:35Z a clean-directory npm install --dry-run @deepseek-ai/dsh@alpha succeeded (585 packages) while at 16:07:45Z npm i -g --prefix <existing 0.1.6 tree> ETARGETed. So a dry-run gate (fix #2) only predicts real upgrades if it runs in a tree shape matching them — exact intra-monorepo pins (fix #4) would remove the ambiguity outright.
Uh oh!
There was an error while loading. Please reload this page.
TL;DR
As of 2026-09-22T06:28Z, the README's documented install command fails on a clean machine for both promoted dist-tags:
latest0.1.5-rc.2next0.1.5-rc.3alpha0.1.7-alpha.1All failures are the same missing leaf:
Two independent defects, both in the publish pipeline (not in the code):
0.1.5-rc.3wave published its parents but never published that leaf.dsh-web-app@0.1.5-rc.3was published declaring@deepseek-ai/dsh-client-ui-sidebar-documentpreview@^0.1.5-rc.3, which does not exist on the registry — and still does not.dsh@0.1.5-rc.2(thelatesttag) declares@deepseek-ai/dsh-web-app@^0.1.5-rc.2; that range floats to today's0.1.5-rc.3, which requires the missing leaf. Solatestbecame uninstallable two days after it was published, with zero republishes.A third, latent issue: the wave itself is racy — parents are published before leaves (observed live: parent at 06:21:56Z, leaf at 06:22:16Z), and a dist-tag was promoted while its own tarball still 404'd.
Recurring, not new: #2991, #3461, #5969, #6168, #7135, #7362 are the same class of report. #6168 is literally the same ETARGET on
0.1.5-rc.1.Environment
node v24.14.0,npm 11.9.0, clean npm cache, no prior@deepseek-ai/*installReproduction
Same result for
@deepseek-ai/dsh@latest,@deepseek-ai/dsh@next, and@deepseek-ai/dsh@0.1.5-rc.2directly.Evidence (registry.npmjs.org, 2026-09-22T06:05–06:28Z)
1. dist-tags and published versions of the missing leaf
2. The rc.3 wave: parents published, leaf skipped
From the
timefield of each package:3. Why the "stable"
latesttag broke retroactively^0.1.5-rc.2accepts0.1.5-rc.3(same[0.1.5]tuple, so prerelease matching applies), and0.1.5-rc.3of the web app needs a leaf that does not exist. Result:dsh@0.1.5-rc.2— published 2026-09-10, untouched since — became uninstallable at 05:53Z today the instant the new wave landed. Any user oflatest, any CI, and any npm mirror that lags the registry sees this.4. Latent: each wave is racy, and tags are promoted before artifacts exist
Observed live on the alpha wave (same publish job):
For those 20 seconds, every install of that wave dies with the same ETARGET. Additionally, at 06:27:13Z the
alphatag already pointed at0.1.7-alpha.1while its own tarball was not yet fetchable:(
npm install @deepseek-ai/dsh@alphasucceeded a moment later — 512 packages,dsh --version→0.1.7-alpha.1— so this window closed, but it demonstrates tag-before-artifact ordering.)Impact
@deepseek-ai/dshis at ~353,089 downloads/week;npx @deepseek-ai/dsh webis the only install command the README documents, and it fails out of the box right now.nextcurrently points at a tree that can never resolve;latestpoints at a tree that broke retroactively — so there is no "known good" stable entry point to recommend.Suggested fixes (publish pipeline, in priority order)
npm install --dry-run --no-audit @deepseek-ai/dsh@<tag>; the ETARGET shows up in under 30 s. Run it forlatest/next/alphabefore/afternpm dist-tag add. Adsh-shippedinstall-doctor(Community tool: DeepSeek Harness Install Doctor #3469) would be a good home for this check on the user side, but it must run in CI on the publish side to be preventive.npm dist-tag add @deepseek-ai/dsh@<prev> next) andnpm deprecatethe unresolvable version with a pointer. Todaynexthas been pointing at an unresolvable tree since 05:55Z.^0.1.5-rc.2means "any 0.1.5 prerelease ≥ rc.2", so every new wave retroactively invalidates every earlier release of the same line. Either pin exactly (0.1.5-rc.3) or letpnpm publishrewriteworkspace:*to exact versions. Exact pins also make the release self-consistent when a wave is partially published.dsh-0.1.7-alpha.1.tgzwhilealphaalready pointed at it).Workaround for users right now
Verified on this machine:
npm install @deepseek-ai/dsh@alpha→added 512 packages,./node_modules/.bin/dsh --version→0.1.7-alpha.1,dsh web --helpOK.latest/nextstill fail as of 06:28Z.Related reports (same class)
0.1.0-rc.6declares an unpublished dependency0.1.0-rc.8not installable (missingdsh-agent-loop@^0.1.0-rc.8)0.1.5-rc.1global install fails with ETARGET on an unpublisheddsh-util-crypto@^0.1.5-rc.10.1.5-rc.2ships incompletedependencies+ staledist-tags.latestHappy to re-run the checks and post a follow-up with the fixed state if it helps close this out.
All reactions