Test plan
August 27, 2026 · View on GitHub
Cola does not have to be the guinea pig. Run these against a local DSH checkout plus dshx.
Static
npm install
npm test
npm run typecheck
tests/static-call-sites.spec.ts greps skills and docs for harness leftovers:
- Cursor
AskQuestion,TodoWrite,~/.cursor/rules - Cursor panel slugs (
claude-fable-5-thinking-max,gpt-5.6-sol-max,grok-4.6-fast-xhigh,claude-opus-5-thinking-xhigh) subagent_type, grokget_task_output, grokscheduler_create- spawn docs sending
reasoning_effort/thinking cursor-team-kit,/deslopas a required control skill
dshx check
From a machine with dshx and a DSH checkout:
dshx setup --harness /path/to/deepseek-harness
# link this repo as my-plugins/pstack-dsh if it is not already
dshx check pstack-dsh --harness /path/to/deepseek-harness
Must pass: named export function apply, no export default, boot marker [my-plugins/pstack-dsh] loaded in source, portable cordis.yml, dsh.client + lazy-CJS lib/client.js (window.__ModuleLoader__.load).
verify-boot (isolated cold boot)
dshx status # if a live Host is already supervised, skip this section
dshx verify-boot pstack-dsh --port 43123
Never --force. Never stop a Host this command did not start.
This cloud checkout ran dshx check green. dshx verify-boot pstack-dsh --port 43123 then skipped isolated cold boot: the linked official DSH tree had no installed CLI (dump-config exited 1, id pstack-dsh missing from dump-config). No Host was started or stopped. Re-run verify-boot on a machine where dsh dumps config.
Catalog / overlay (no network models required)
tests/catalog.spec.ts and tests/overlay.spec.ts cover:
- empty host →
selectableCount === 0,inheritParent: true, oauth recommend line - API-key route only when
credentials.describesays configured - unsigned vendor ids are not listed
- overlay write rejects a route that is not selectable
- overlay write rejects
reasoningEffortwhen that route has no efforts - overlay write rejects an effort id the live adapter did not list
- missing overlay file → every role inherits
- Settings snapshot/save uses the same overlay path and rejects unsigned slugs (
tests/settings-api.spec.ts,tests/settings-draft.spec.ts)
Manual Settings (EDITH / local DSH Web)
After the bundle has been activated on the intended Host (initial bundle installation requires an authorized Host restart):
- Open Settings (sidebar gear) → pstack / pstack 角色.
- With no keys and no oauth store: inherit-only, oauth recommend line, Save still writes inherit overlay.
- Add
DEEPSEEK_API_KEYor sign in through dsh-oauth-login. The role selector updates from Host notifications, without a page reload. Effort options matchresolveModelInfoor are omitted. - Save.
$DSH_HOME/pstack-dsh.jsonmatches the form.pstack_spawndoes not growmodel/reasoning_effortfields. /setup-pstackonly points at Settings → pstack. It does not run a TUI picker.- Leave role/effort edits unsaved, then refresh models or receive a login/logout notification. Choices update; drafts and Save's dirty state remain. A selected route that disappears is marked unavailable rather than silently displaying inherit.
node tests/settings-refresh.browser.mjs [candidate/lib/client.js] checks these UI behaviors on the existing 127.0.0.1:43127 Host using the globally pinned Playwright runtime. Snapshot responses and Host notifications are simulated only in that test page; no login, saved overlay or server process is changed. Supplying a candidate bundle tests it before live publication.
Client builds use dshx externalClientBundle; configure matching DSHX_HARNESS / ~/.config/dshx/harness paths before npm run check.