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
dev/bench.sh starts without pnpm or the harness native addon, and blames the plugin 42 smoke failures later #2576
core/dev/bench.sh starts a bench without checking the two things it cannot start without, and in both cases the failure surfaces somewhere else.
1. pnpm missing.ensure_profile runs pnpm install with its output sent to /dev/null and its exit code ignored. With no pnpm on PATH the profile ends up with no node_modules, so dsh logs skipping profile bundle "ds-bot": … cannot resolve profile bundle "ds-bot" and the web server answers, but the plugin never loads. node dev/smoke.mjs smoke <port> then fails 17 steps with ENOENT …/bot/state.json, which reads like a plugin bug.
Measured 2026-11-07 05:41Z on this host: dev/bench.sh smoke 3296 8296 reset → dev/bench.sh: 62: pnpm: not found, exit 127 (pnpm is supplied by corepack, not on PATH).
2. Harness native addon missing. When dsh web starts from a deepseek-harness source checkout whose prebuilt system.node is absent, the bench boots and every Bot turn fails:
bot/logs/diagnostics.jsonl records it once per turn (source: turn), so all 42 smoke steps report a failure and none of them is a plugin bug. The binary ships prebuilt in @deepseek-ai/node-addon-system-linux-arm64@0.1.2 (already installed under core/dev/harness/node_modules by npm run harness), so the fix is a copy — but nothing tells the operator that.
Expected.start refuses to run, before it writes the profile, with a one-line reason and the remedy, and exits non-zero:
pnpm not on PATH → name it and say corepack pnpm supplies it.
the native addon for this host (uname -m, glibc vs musl) missing under $DSH_HARNESS/native/system/packages/<platform>/bin/… → name the path it looked for and the package that ships it.
ensure_profile's install must not hide its failure: capture the output, and on a non-zero exit print it and stop.
Scope.core/dev/ only — bench.sh plus a small Node helper it calls (e.g. core/dev/bench-preflight.mjs) so the check is unit-testable; no plugin code, no core/src/**.
Acceptance.
a) With pnpm off PATH, dev/bench.sh smoke 3296 8296 reset exits non-zero, prints the pnpm line, and leaves no profiles/web behind.
b) With <harness>/native/system/packages/<platform>/bin/<libc>/system.node renamed away, it exits non-zero and names that exact path.
c) On a healthy host the preflight passes and node dev/smoke.mjs smoke <port> still reports all 42 steps passed.
d) A unit test covers the preflight's decision (pass, missing pnpm, missing addon) and fails when the check is removed.
Claimed #2576 — branch dev/2576-bench-preflight, first step: the preflight module core/dev/bench-preflight.mjs (pass / missing-pnpm / missing-native-addon) and its unit test, then dev/bench.sh calls it before writing the profile.
Activity
Birfy commentedon Nov 7, 2026
Written-by: Triage
Claimed #2576 — branch
dev/2576-bench-preflight, first step: the preflight modulecore/dev/bench-preflight.mjs(pass / missing-pnpm / missing-native-addon) and its unit test, thendev/bench.shcalls it before writing the profile.dev: refuse a bench start without pnpm or the harness native addon
dev: refuse a bench start without pnpm or the harness native addon