# DSH Session Insights 0.5.1 candidate This source record precedes publication. Final commit, CI run, canonical artifact and native-host identities belong to the release's `release-acceptance.md` and machine-readable annexes. The pending gates below are not native or publication results. ## Supported contract The npm Bundle and optional Python CLI are version 0.5.1 and target only DSH `0.2.0-rc.1`. All DSH peers and both Bundle compatibility fields pin that version. Both readers accept V4 input and use analysis identity `v4-dsh020rc1.2`; old manifests and deterministic caches invalidate. Existing reports are retained. Older raw logs require upstream migration first. ## Recovery semantics Only structured `data.error.code` values exactly equal to `TOOL_OUTCOME_UNKNOWN` or `TOOL_NOT_STARTED`, paired with a nonempty call ID, enter `tool_recovery: {outcome_unknown, not_started}`. Totals and session summaries expose these counters. Recovery does not add a failure, failed verification, permission block, state change or retry. Text mentioning a code, an error without a code, and ordinary codes including object-prototype names keep ordinary result rules. Recovery evidence is bound to `(callId, turn, step)`. Reusing an ID in a later turn preserves a separate uncertainty record and does not borrow tool metadata from an earlier call. A settled call retains its result; the strict official catalog rejects a second result for the same scope. Analyzer-side defensive controls also cover late results outside that strict admission boundary. The recovery text asks readers to check external state before retrying an operation that can change data; neither code proves execution or absence of effects. The fixture generator imports the target package's official `interruptedTurnClosers` / `ToolCallRecovery`, requires strict catalog admission and verifies that the repaired tail closes once. The retained `tests/fixtures/rc2-repairs` directory name does not promise support for the old host. Node/Python tests cover counters, ordinary-error controls, scoped semantic evidence, persisted-file parsing, repeat analysis, and three privacy modes × two locales. ## Reproduce source checks Use Python 3.11+ and Node `22.19.0` or the configured Node `24.8.0` lane. The target runtime's lockfile resolves the official DSH package closure. Missing runtime, mixed DSH versions, wrong expected version and empty fixture input must fail. ```sh npm ci --ignore-scripts npm ci --prefix tests/dsh-runtime --ignore-scripts DSH_RUNTIME="$PWD/tests/dsh-runtime" PYTHONPATH=src python -m unittest discover -s tests -v npm test python scripts/build_native_rules.py --check python scripts/build_fixture.py --check node scripts/verify_session_contract.mjs --fixture --runtime tests/dsh-runtime --expected-dsh-version 0.2.0-rc.1 --required node scripts/dsh-repair-fixtures.mjs tests/dsh-runtime --check node scripts/dsh-contract-tests.mjs tests/dsh-runtime node scripts/dsh-services.mjs tests/dsh-runtime python scripts/audit_public_tree.py --root . git diff --check ``` ## Artifact and portable gate `scripts/pack_candidate.mjs ` requires a clean checkout at that exact commit. It copies the npm file list into a private staging directory, adds `gitHead`, packs once and reads the tarball back. It retains the tarball, SHA-256, size and file inventory without editing the checkout. The Ubuntu Node 22.19.0 contract job can produce the `candidate-tgz` artifact on a candidate branch; the dispatchable `windows-host-acceptance` workflow also offers a producer mode. Select one producer result for the release and transport those exact bytes to every consumer. `scripts/verify_host_acceptance.mjs` verifies digest and embedded identity, installs with the official CLI under a scratch `DSH_HOME`, compares the original, reinstalled and loaded package files, and registers the tools on the target services. Real Session/query services hold two populated synthetic sessions. The production project filter selects one path containing Chinese characters and spaces. Both language reports must contain one selected session, one ordinary failure and exactly one of each recovery status. A pending prepare operation is cancelled; no new run appears during the following 500 ms, then a populated rerun succeeds. This observation does not locate cancellation within a particular worker phase. The entry emits the generic `native-acceptance/v2` schema after context disposal and scratch removal. `scripts/validate_host_annex.py` validates the complete gate set, identity bindings, status and redaction. Public annexes contain no machine-local paths. This is installed-artifact and service evidence: full profile boot, real JSONL persistence, actual Agent command execution and model calls remain separate native gates. ## Gates at source freeze | Gate | Required evidence and state | | --- | --- | | Source and recovery review | Local full suite plus independent ordinary-error and scoped-evidence regressions; candidate-specific evidence retained by the release coordinator | | Exact-commit CI | Pending; all 13 configured jobs, three OSes, Python 3.11–3.13 and four Node configurations | | Canonical package | Pending; one retained producer artifact with full commit, digest, size and inventory | | Windows portable installed-artifact entry | Pending against the canonical artifact; no-model service scope only | | macOS and Windows actual host | Pending; canonical CLI install/load, populated real persistence and cold read, actual Agent command, path filtering, recovery counters, cancellation/rerun and cleanup | | macOS real-model semantics | Pending; one small nonempty prepare/batch/aggregate/finalize workflow, with recovery evidence treated as uncertainty | | Bilingual report inspection | Pending; HTML/JSON content and affected interactions. Loopback preview and offline opening are distinct evidence | | Publication and public readback | Pending; accepted commit, tag, npm and GitHub Release must agree with the canonical bytes | Windows does not repeat the same model protocol unless native acceptance exposes a platform-dependent issue. Daily-profile adoption, credential copying, marketplace ingestion and promotion are outside this release batch. Historical 0.5.0 acceptance applies only to its recorded artifact and host.