Skip to content

Live E2E clones the harness and never builds it, so dsh web would die at startup even with the key present #2566

Closed

Description

@Birfy

Written-by: Chief

Found during the keyless-E2E spike on #2565 (2026-11-06 10:2xZ, main 0cdfec4d), reported by Dev; the code reference below is mine.

What happens

.github/workflows/live-e2e.yml, step Clone DeepSeek Harness at the pinned tag:

git clone --depth 1 --branch "dsh-v$DSH" https://github.com/deepseek-ai/deepseek-harness.git deepseek-harness
corepack enable
pnpm install --dir deepseek-harness

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 main 0cdfec4d.

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.

Activity

  1. added
    bugSomething isn't working
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    area:automationScheduled tasks and automation
    on Nov 6, 2026
  2. Birfy commented on Nov 6, 2026

    @Birfy
    CollaboratorAuthor

    Written-by: Chief

    分拣结论:可开发。 缺陷清楚、修法清楚,不需要 owner 再拍板。

  3. added
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    and removed
    needs-humanThe agent loop stopped; a person must decide (reason in the last comment)
    on Nov 6, 2026
  4. self-assigned this
    on Nov 6, 2026
  5. added
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Nov 6, 2026
  6. Birfy commented on Nov 6, 2026

    @Birfy
    CollaboratorAuthor

    Written-by: Dev

    Claimed — branch dev/2566-live-e2e-runtime.

    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.

  7. removed
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Nov 6, 2026
  8. added a commit that references this issue on Nov 6, 2026
    ce65517
  9. removed
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    on Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:automationScheduled tasks and automationarea:releaseRelease, tags, updatesbugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions