DSH upgrade assessment — 2026-09-20¶
Migration implemented: Simjecture profile 0.2.3 pins DSH 0.1.5-rc.2.
The scientific CampaignKernel and its evidence contract remain unchanged.
The adapter changes and validation described below replace the earlier
recommendation to retain 0.1.1-rc.2 pending compatibility work.
At the 2026-09-20 assessment, the official npm registry tagged 0.1.5-rc.2 as latest and next,
and 0.1.6-alpha.2 as alpha. These are all prereleases. The recommended first
migration target is the default-channel 0.1.5-rc.2, keeping the alpha work
separate. Versions were checked with npm view @deepseek-ai/dsh dist-tags --json.
Compatibility findings addressed¶
The audit inspected upstream tag dsh-v0.1.5-rc.2, commit
fb2c4b9e698e30edb738bca4cf0618587db7d203.
Boundary |
Previous adapter |
Upstream target |
Migration requirement |
|---|---|---|---|
Session history |
|
|
Migrate history access and exercise resume, summarization, and pruning against real DSH |
Surface replacement |
|
|
Update replacement events and test balanced tool exchanges and preserved original history |
Durable sessions |
Existing campaign-local DSH logs |
Target includes session-format V3 and V2-to-V3 migration |
Test upgrade on copies of old logs, including restart and failed migration; retain originals for rollback |
Profile composition |
Pinned headless profile, disabled generic tools, seven lead tools and scoped workers |
Plugin composition and runtime have evolved |
Inspect resolved configuration and actual tool catalogs; test mandatory MCP startup failure and every role restriction |
Primary source files:
The 0.1.6 release notes additionally describe headless stdin/session/JSON-event
support, MCP SDK v2, asynchronous agent initialization, deprecation of synchronous
history readers, and changes to plugin loading. Those features may eventually
simplify our custom driver, but do not by themselves replace its campaign budget,
control-file, activity projection, and reconciliation responsibilities. An alpha
migration should use its asynchronous history API rather than adopting a newly
deprecated synchronous interface.
Why the scientific kernel does not need to change¶
DSH owns model requests, retries, conversation history, compaction, and child sessions. CampaignKernel owns contracts, claim disposition, evidence provenance, sandboxing, durable simulation jobs, and the deterministic finish gate. The confirmed upstream breaks are in the JavaScript adapter’s DSH APIs, not the scientific MCP contract. No kernel schema migration is justified by these changes.
The version-change acceptance criteria require a real-runtime adapter smoke test in addition to the existing bundle tests: fresh campaign, each scoped role, tool-free judge, context pruning, pause/resume on migrated logs, interrupted durable job recovery, and finalization only through the kernel gate. Existing source-string/fake tests alone cannot qualify a DSH version change. Install and test an isolated profile; do not migrate active campaign logs in place during evaluation.
Completed validation¶
The adapter now uses snapshotEvents() / eventAt(), V3 surface replacement
fields, the renamed ToolCallId export, and personaPrefix. Removed profile
rows no longer produce missing-entry warnings. Claim guards attach at
agent/created, before a child receives its first prompt. The Blocker Resolver
allows DSH’s schema-validated structured_output handoff. The Judge uses the
supported schema subset and explicitly rejects inconsistent decision/disposition
pairs before calling the kernel.
The checked-in Node tests run real DSH services with deterministic model output. They cover original-history preservation, V2-to-V3 migration, fresh/resumed lead sessions, each worker’s first-call mutation guard, independent judge tools and usage, and job reconciliation without model polling or resubmission. A complete CLI/profile/Python-MCP test verifies the exact lead tool catalog, immutable snapshot access, rejection of premature finalization, pause/resume, and no model request after mandatory MCP startup failure. No paid-provider or long-running scientific campaign was used for qualification. Production profiles and existing campaign logs were not modified during this work.