DSH Action Parity
   
Evidence that a business action is implemented once and reached consistently from CLI, MCP and GUI surfaces in DeepSeek Harness. Version 0.2 adds a formal Codex plugin manifest, a proof-only MCP server, real ToolRuntime smoke coverage and a namespace-export regression test for the stock DSH Web loader.
This plugin does not execute business actions and does not test buttons by pixels. It verifies a manifest of stable Action IDs, content-addressed action-core and binding declarations, and structural replay observations produced by each interface.
What it verifies
- every CLI, MCP and GUI binding names the same stable
actionIdandcoreActionId; - GUI bindings expose
data-action-id:<actionId>while CLI and MCP use stable machine identifiers; - core modules, binding declarations and replay fixtures still match their declared SHA-256;
- the same fixture yields the same result digest, success state and state-version transition on every surface;
- stale mutations fail closed with
STALE_STATEand do not advance state; - confirmation-required actions enforce confirmation on every surface;
- missing/stale evidence and every parity failure are disclosed in a deterministic content-addressed report.
Inputs containing secret-, prompt-, chat-, raw input/output-, argv-, stdout- or stderr-shaped fields are rejected. Paths must remain inside workspaceRoot; symlink inputs and output directories are rejected. Only the explicit artifactDir is written, with atomic publication and SHA-256 read-back verification.
Install
dsh plugin --profile web add github:dongsheng123132/dsh-action-parityThe bundle registers dsh_action_parity_inspect and dsh_action_parity_verify.
The package deliberately exposes only namespace exports and declares standard ToolDefinition objects without bundling a second DSH runtime. This keeps it loadable by the stock DSH Web profile while preserving the same shared, interface-free verification core for DSH tools, CLI and MCP.
CLI
dsh-action-parity inspect --workspace-root examples/basic --manifest action-parity.manifest.json
dsh-action-parity verify --workspace-root examples/basic --manifest action-parity.manifest.json --observations observations.jsonl --artifact-dir artifactsExit code 0 means verified, 2 means evidence was processed but parity failed, and 1 means invalid or unsafe input.
See [examples/basic](examples/basic) for a mutation whose CLI, MCP and GUI bindings share one core, including success and stale-state fixtures.
Codex and proof-only MCP
The formal Codex bundle exposes two stdio MCP tools:
action_parity_manifest_inspectvalidates an inline manifest;action_parity_observations_verifychecks inline JSONL envelopes against that manifest.
These MCP tools are intentionally proof-only: they do not read the filesystem, dereference declaration paths, execute actions or write artifacts. Therefore declaration content hashes are reported as not verified. Use the DSH tools or CLI when you need workspace-bounded file hash verification and an atomically published, read-back-verified report.
Development
npm test
npm run check
npm run smoke:plugin
npm run smoke:mcp
npm run smoke:dsh
npm run smoke:web-loaderMIT