Skip to content

ci: mount the bundle in the real dsh harness - #2

Merged
caelaxie merged 3 commits into
mainfrom
cursor/dsh-harness-ci-c51d
Oct 27, 2026
Merged

caelaxie merged 3 commits into
mainfrom
cursor/dsh-harness-ci-c51d

Conversation

@caelaxie

@caelaxie caelaxie commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

ci installs dsh 0.2.1-rc.4 (@deepseek-ai/dsh@0.2.1-rc.4) and checks the bundle in the real harness. npm test stays. bump the pin in its own pr when dsh moves.

the job runs dsh plugin --profile ci add <checkout>, then dsh --profile ci --dump-config, and fails unless that dump has the dsh-pstack layer. it then boots the profile and fails unless the pstack provider lists poteto-mode, setup-pstack, deslop, control-cli, and control-ui.

deslop, control-cli, and control-ui are not in this branch. merge this after the embed pr, or rebase onto it. the harness job stays red on those three until then.

no api token. dump and skill listing run offline. the skill list imports dsh's internal profile-boot files, so that import stays tied to this pin.

Open in Web Open in Cursor 

CI installs @deepseek-ai/dsh@next, mounts the checkout on a throwaway profile, and fails unless that profile lists the required skills.

Co-authored-by: Kaitian Xie <caelaxie@users.noreply.github.com>
@cursor

cursor Bot commented Oct 27, 2026

Copy link
Copy Markdown

local run of the same steps, on node v22.23.4.

npm test
npm install -g --prefix /tmp/dsh-prefix pnpm@10 @deepseek-ai/dsh@next
export PATH="/tmp/dsh-prefix/bin:$PATH"
export DSH_HOME=/tmp/dsh-home-proof DSH_PROFILE=ci
dsh plugin --profile ci add "$PWD"
dsh plugin --profile ci list --depth 0
dsh --profile ci --dump-config > "$DSH_HOME/dump-config.yml"
grep -F '# == dsh-pstack' "$DSH_HOME/dump-config.yml"
grep -F -- '- id: pstack' "$DSH_HOME/dump-config.yml"
grep -F 'name: dsh-pstack' "$DSH_HOME/dump-config.yml"
node .github/prove-dsh-profile.mjs

trimmed output:

> dsh-pstack@0.15.33 test
> node scripts/validate.mjs
Validated 58 skills, 23 playbooks, 24 principles, and the DSH bundle manifest.

DSH 0.2.1-rc.4
PNPM 10.34.9
dsh: initialized profile ci at /tmp/dsh-home-proof/profiles/ci
dependencies:
+ dsh-pstack link:/workspace
Already up to date
Done in 318ms using pnpm v10.34.9

dsh-profile-ci /tmp/dsh-home-proof/profiles/ci (PRIVATE)
└── dsh-pstack@link:../../../../workspace

# == dsh-pstack
- id: pstack
  name: dsh-pstack

started bundles: @deepseek-ai/dsh-base, dsh-pstack
pstack skills (58):
...
poteto-mode
setup-pstack
...
missing required pstack skills: deslop, control-cli, control-ui
PROVE_EXIT:1

the exit 1 is the three skills that are not on this branch yet. poteto-mode and setup-pstack are in the pstack provider list.

@caelaxie caelaxie left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verdict: changes requested (comment review, same-account author).

shape is right: ci-only, no plugin content touched, and dsh plugin --profile ci add + dump-config + a booted skill listing is the proof dsh-pstack needs. but this can't merge yet.

  1. blocker: the new Mount bundle in DSH job fails by design on this head. your own local run ends missing required pstack skills: deslop, control-cli, control-ui / PROVE_EXIT:1, and there is no embed pr or issue open in this repo. merging now turns main red. land the embed of deslop, control-cli and control-ui first (copied from upstream cursor-team-kit/, no team-kit mention anywhere), then rebase this onto main and show the harness job green on the rebased head.
  2. pin the harness version (inline). a floating dist-tag makes the proof non-reproducible; droid ci already broke once on an unpinned cli.
  3. nit (inline): the header comment calls a deep file import a public export.

issue linkage: none needed for a ci-only pr, fine as is.

Comment thread .github/workflows/ci.yml Outdated
set -euo pipefail
prefix="${RUNNER_TEMP}/dsh-prefix"
# npm dist-tag latest trails next. @next is the newest published runtime.
npm install -g --prefix "$prefix" pnpm@10 @deepseek-ai/dsh@next

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pin the exact runtime the proof ran on: @deepseek-ai/dsh@0.2.1-rc.4 instead of @next. bump it in its own pr when dsh moves.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pinned to @deepseek-ai/dsh@0.2.1-rc.4. the step comment says to bump it in its own pr.

Comment thread .github/prove-dsh-profile.mjs Outdated
// Boot a profile that already ran `dsh plugin --profile <name> add <checkout>`
// and fail unless dsh-pstack's skill provider lists the required skills.
// There is no dsh flag that prints the skill catalog; `dsh --help` only offers
// plugin (pnpm) and --dump-config. This uses the public profile-boot export.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lib/profile-boot.js and the nested node_modules/@deepseek-ai/dsh-app-boot/lib/index.js are deep file paths, not package exports. say that plainly (e.g. "imports dsh's internal profile-boot module; tied to the pinned dsh version") so the next dsh bump knows where it breaks.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reworded. it now says the script imports dsh's internal profile-boot files, tied to the pinned version.

The skill-list helper imports internal profile-boot files, so the workflow names that version instead of the next tag.

Co-authored-by: Kaitian Xie <caelaxie@users.noreply.github.com>

@caelaxie caelaxie left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verdict: still held (comment review, same-account author).

fixed on a166c77: dsh is pinned to @deepseek-ai/dsh@0.2.1-rc.4, and the header comment now says it's an internal import tied to the pin. good.

left: Mount bundle in DSH is red on this head, as expected without the embed. #3 just merged as e1d47bb, so rebase onto main and show the harness job green on the rebased head (it should list poteto-mode, setup-pstack, deslop, control-cli, control-ui). then this merges.

Pick up deslop, control-cli, and control-ui from the embed so the profile skill check can pass.
Co-authored-by: Kaitian Xie <caelaxie@users.noreply.github.com>
@cursor

cursor Bot commented Oct 27, 2026

Copy link
Copy Markdown

merged main (e1d47bb) in. mount bundle in dsh is green on 46ba388.

https://github.com/pstack-ports/dsh-pstack/actions/runs/40432239583

# == dsh-pstack
- id: pstack
  name: dsh-pstack
started bundles: @deepseek-ai/dsh-base, dsh-pstack
pstack skills (61):
control-cli
control-ui
deslop
poteto-mode
setup-pstack

@caelaxie caelaxie left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pass

  • 46ba388 is merged up to main e1d47bb. dsh is pinned to exactly 0.2.1-rc.4 with no @next left, and the prove-dsh-profile.mjs comment now calls the import dsh's internal profile-boot module. only ci.yml and the proof script change.
  • mount bundle in dsh is green in run 40432239583: dsh 0.2.1-rc.4 lists 61 pstack skills, including deslop, control-cli, control-ui, poteto-mode and setup-pstack, with nothing missing.

@caelaxie
caelaxie merged commit 02aecc3 into main Oct 27, 2026
3 checks passed
@caelaxie
caelaxie deleted the cursor/dsh-harness-ci-c51d branch October 27, 2026 01:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants