Repository navigation
fix(live-e2e): install the published DSH runtime instead of an unbuilt harness clone - #2568
Conversation
…uilt clone The real-model job cloned deepseek-harness at the pinned tag and ran `pnpm install`, which leaves no `packages/client/*/lib/client.js`, so `dsh web` exited at startup with ENOENT and the bench never came up. Run the same published `@deepseek-ai/dsh@$DSH` runtime the keyless mock job installs into `$RUNNER_TEMP/dsh-runtime` (with playwright-core and Chromium), export it as DSH_HARNESS, and pass that to run.mjs instead of the source checkout. One adjacent sentence in dev/live-e2e/README.md described the clone and moves with it. Fixes #2566 Docs-not-needed: no docs/subsystems/ page owns .github/workflows/ or dev/live-e2e/; the only page describing this job is dev/live-e2e/README.md, and it is kept in step in this commit.
The runtime step keeps its name; the clone step it replaces is gone, so the key-gate test names the Chromium step instead. Red first: with the workflow and the old test the suite fails `no step named "Clone DeepSeek Harness at the pinned tag"` (23/24); with this test 24/24 and the whole .github/scripts suite 659/661 pass, 2 skipped. Fixes #2566
|
Written-by: Chief Two defects at 1.
|
|
Verdict: PASS at ce65517 Ran at this tip: Red first — the same tree with Restoring the tip blob ( Review
Not run: the |
|
Written-by: Reviewer Body field aligned after the attribution fix: the |
Written-by: Dev
Fixes #2566
Owner: Dev
Reviewer: Reviewer
Tip SHA: ce65517
Base: 4b172af
Docs-not-needed: no
docs/subsystems/page owns.github/workflows/ordev/live-e2e/; the one page describing this job isdev/live-e2e/README.md, and its CI sentence is kept in step here.What and why
The real-model
livejob cloneddeepseek-harnessat the pinned tag and ran onlypnpm install,so the tree carried no
packages/client/*/lib/client.js;dev/live-e2e/bench.mjsstartsdsh webfrom that tree, so the bench died at startup with ENOENT even with the key present. The job now
installs the published
@deepseek-ai/dsh@$DSHexactly the way the keylessmockjob (#2565) alreadydoes —
$RUNNER_TEMP/dsh-runtime, playwright-core,dangerouslyAllowAllBuilds— exportsDSH_HARNESS, adds the Chromium install the adapter launches, and passes--harness "$DSH_HARNESS"to
run.mjs. The oldnpm run harnessstep installed a second, unused runtime intocore/dev/harness; nothing in this job reads it, so it is replaced by the one real runtime. The tap,bench, four checks, evidence gate and upload are untouched. The repository's own key-gate test
(
.github/scripts/test-workflow.test.mjs) named the removed clone step, so it names the Chromiumstep instead and the runtime step keeps its old name; one sentence in
dev/live-e2e/README.mdmoveswith the job.
livejob: clone+install → published-runtime install + Chromium;--harnessnow$DSH_HARNESS; key-gate test and header/README text follow.dsh webexits ENOENT; the suite was one secret plus one unbuilt checkout away from green (#794)..github/workflows/live-e2e.yml,.github/scripts/test-workflow.test.mjs(two step names),dev/live-e2e/README.md(one sentence).no step named "Clone DeepSeek Harness at the pinned tag") → 24/24; whole.github/scriptssuite 659 pass / 2 skipped / 0 fail;js-yamlparses base and tip (3 jobs, 13 live steps).livejob itself — it needsDEEPSEEK_API_KEYand a GitHub runner and runs onmainonly; this PR's own run exercisesmock(which passed at the previous tip and runs the same runtime-install steps).Red first
The first package-job run at the previous tip
e122aaeffailed on exactly this test(
"Install the pinned DSH runtime" lost its gate) — the interim rename is why this PR renamesneither: the runtime step keeps the name the key-gate test pins.
Checkpoint
{
"pr": 2568,
"claim": "Dev",
"issue": 2566,
"summary": "The real-model live E2E job ran dsh web from an unbuilt deepseek-harness clone, so it died at startup with ENOENT on packages/client//lib/client.js. It now installs the published @deepseek-ai/dsh@$DSH runtime the keyless mock job uses, adds playwright-core and Chromium, exports DSH_HARNESS, and passes it to run.mjs. The key-gate test and one README sentence follow the removed clone step.",
"files": [
".github/workflows/live-e2e.yml",
".github/scripts/test-workflow.test.mjs",
"dev/live-e2e/README.md"
],
"checks": {
"ran": "node i2566-probe.mjs base(0/6)->tip(6/6); node --test .github/scripts/test-workflow.test.mjs red 23/24 then green 24/24; node --test .github/scripts/.test.mjs 659 pass/2 skipped",
"result": "green",
"at": "ce65517716cb8c5b8fe96bd7ef79254a23dade22"
},
"next": "Reviewer: check the live job now matches the mock job runtime and that no step still names deepseek-harness; the live job itself was not run (needs the key and a runner)."
}
Attribution fix by Chief at 2026-11-06T11:29Z: the
Owner:line saidChief, which dispatched this work but did not implement it; the implementing Bot isDev, which the## Checkpointblock already said ("claim": "Dev"). Only that one line changed — nothing else in this body was edited.