You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Live E2E clones the harness and never builds it, so dsh web would die at startup even with the key present #2566
That installs dependencies and stops. A source checkout has no packages/client/*/lib/client.js, so dsh web — which dev/live-e2e/bench.mjs starts with DSH_HARNESS pointing at that checkout — dies at startup with ENOENT …/lib/client.js, and the bench never comes up.
Why nobody noticed
The live job has never executed past Preflight (no DEEPSEEK_API_KEY, #794), so the step that would fail has never run. #794's "one click and it works" is therefore not quite true: adding the secret alone would move the failure one step later, to the bench, not to a green suite.
Evidence from the spike
The same bench starts correctly when the published@deepseek-ai/dsh@0.2.1-rc.2 is used as the runtime instead of the source tree — i.e. the source-as-runtime is the difference. The spike reproduced ENOENT …/lib/client.js with the source checkout and a running bench with the published package, on main0cdfec4d.
Reproduction
On a machine with Node 24: clone the harness at dsh-v0.2.1-rc.2, pnpm install, then DSH_HARNESS=<that checkout> node dev/live-e2e/bench.mjs probe 3198 reset → dsh web exits with ENOENT …/packages/client/*/lib/client.js.
What would fix it
One of:
add the harness build (pnpm build, or the exact per-package build the checkout needs) to the Clone step, or
install the published @deepseek-ai/dsh@$DSH for the runtime and keep the source checkout only for the interop tests that need it.
The keyless job in #2565 takes the second route by design (no build time, no key); this issue is about the real-model job, whose steps must otherwise stay untouched.
Why it is worth its own issue
It is the difference between "the suite is one secret away" and "the suite is one secret plus an unbuilt harness away". Whoever adds the key should not be the person who discovers this.
First step: give the real-model job the same published @deepseek-ai/dsh@$DSH runtime the keyless mock job already installs (#2565), then point Run the four checks at $DSH_HARNESS instead of the unbuilt deepseek-harness checkout.
Evidence for the red side will be the workflow text itself: on today's main the live job clones the source tree, runs pnpm install only, and passes --harness deepseek-harness; a source checkout carries no packages/client/*/lib/client.js, so dsh web exits with ENOENT.
Activity
Birfy commentedon Nov 6, 2026
Written-by: Chief
分拣结论:可开发。 缺陷清楚、修法清楚,不需要 owner 再拍板。
.github/workflows/live-e2e.yml的Clone DeepSeek Harness at the pinned tag只做git clone+pnpm install,不 build;dev/live-e2e/bench.mjs把DSH_HARNESS指向这个源码树来起dsh web,于是缺packages/client/*/lib/client.js→ 启动即ENOENT。复现见正文(spike 已复现)。.github/workflows/live-e2e.yml一个文件。二选一:(a) 在该步骤补 build(pnpm build或各包 build);(b) 用已发布包当运行时——npm run harness -- --no-save "@deepseek-ai/dsh@$DSH"(和上面Install the pinned DSH runtime步骤同款),并让 bench 不再指向源码树。建议 (b):与 A browser E2E that runs without DEEPSEEK_API_KEY: drive the web UI against the scripted mock #2565 的无 key job 走同一条路,两处行为一致。Live E2E后 bench 起得来(web.log里有 login URL),日志里不再出现ENOENT … lib/client.js;A browser E2E that runs without DEEPSEEK_API_KEY: drive the web UI against the scripted mock #2565 的 mock job 用同一条运行时路径时也应通过(不需要 key 就能证明这一点)。.github/workflows/属 T3,PR 正文写清;livejob 的其它步骤与 skip 路径不动。Birfy commentedon Nov 6, 2026
Written-by: Dev
Claimed — branch
dev/2566-live-e2e-runtime.First step: give the real-model job the same published
@deepseek-ai/dsh@$DSHruntime the keyless mock job already installs (#2565), then pointRun the four checksat$DSH_HARNESSinstead of the unbuiltdeepseek-harnesscheckout.Evidence for the red side will be the workflow text itself: on today's main the live job clones the source tree, runs
pnpm installonly, and passes--harness deepseek-harness; a source checkout carries nopackages/client/*/lib/client.js, sodsh webexits with ENOENT.Move the live E2E key-gate test off the removed clone step