Development

August 14, 2026 ยท View on GitHub

Clone the DSRH repository, enable Corepack, install TypeScript dependencies, build the Bundle, and install the Python project into an isolated environment. The root README contains PowerShell and POSIX commands.

On POSIX, scripts/dev-install.sh performs the dependency installation and build. After setup, scripts/smoke-test.sh runs the complete keyless suite; on Windows use scripts/smoke-test.ps1.

Checks

corepack pnpm typecheck
corepack pnpm build
corepack pnpm test
.venv/bin/python -m ruff check python tests/end-to-end tests/fixtures/toy-training
.venv/bin/python -m ruff format --check python tests/end-to-end tests/fixtures/toy-training
.venv/bin/python -m pytest python/tests tests/end-to-end -q
.venv/bin/python -m dsrh_mcp doctor

The TypeScript publication test runs a real npm pack --dry-run --json against the built package. The Python suite generates a born-digital PDF, mocks provider timeouts and 429 responses, tests malformed inputs and workspace escape, and runs the four-run toy metric pipeline without a model or large training workload.

Local Harness Profile

Set DSRH_PYTHON to the isolated interpreter, install packages/plugin through dsh plugin, and use --dump-config before boot. The package must be rebuilt after TypeScript changes. Skill assets are read from the installed package, so rerun the pack test after changing assets/ or files.

The .upstream/deepseek-harness checkout is development evidence only and is ignored by Git. scripts/verify-upstream.ps1 checks its commit against UPSTREAM.md.

Harness Acceptance

The release acceptance run uses an isolated DSH_HOME, installs packages/plugin through official dsh 0.1.0-rc.6, and verifies:

  • --dump-config contains dsrh-runtime, dsrh-skills, and dsrh-science-mcp.
  • A live profile lists all three packaged Skills, three native tools, and 21 mcp__dsrh-science__* tools.
  • Calling mcp__dsrh-science__dsrh_experiment_validate_manifest through the Harness registry succeeds.
  • An intentionally missing DSRH_PYTHON leaves Skills and native tools intact, registers zero MCP tools, and emits visible reconnect errors.

This acceptance test needs the official CLI package and therefore is an explicit release check rather than part of keyless CI. CI covers Bundle YAML syntax and rows, npm pack contents, Cordis lifecycle cleanup, real MCP stdio discovery/invocation, and the toy pipeline.