# DSH 0.1.5-rc.2 compatibility acceptance This record covers the 0.3.1 session-reader update. It separates local source and native evidence from the committed package, CI, and publication identities, which are recorded in the release receipt. Historical 0.2.0 and 0.3.0 records remain unchanged. ## Scope and platform decision The plugin still declares DSH `0.1.0-rc.8` as its minimum. The target reviewed here is `dsh-v0.1.5-rc.2`; the minimum was not re-tested natively, and future host versions are not claimed as verified. The runtime change is shared Python parsing and the bridge's time-window forwarding. It does not change platform-specific launchers, subprocess handling, DSH plugin registration, or UI integration. Therefore this patch uses the existing Windows/macOS/Linux CI matrix for shared code and path behavior and macOS DSH-native verification for the host workflow. A complete real-model workflow on Windows and Linux is not a required new gate for this diff, and no such run is claimed. Historical Windows slash-dispatch and English DOM limitations remain visible in the README. ## Behavior verified - Select one highest canonical log generation per session directory, supporting compressed and plaintext generations 0–3. Newer, ambiguous, or unreadable current generations are diagnosed without silently falling back to old history. - Exclude system and injected user-role context from human-work counts and semantic evidence. Count attempts that did not deliver a message without inventing a reply or token usage. - Preserve historical tool and usage statistics. Remove replaced semantic evidence in the current surface order, including consecutive replacements whose endpoint sequence numbers descend numerically. - Use the session header's format version for query snapshots, and the caller's `now` for semantic and deterministic windows. - Keep source logs read-only and reports outside the sessions tree. Only disposable synthetic logs were written for testing. ## Source verification The current local run passed 63 Python tests, 20 Node tests, fixture reproducibility, and the public-tree audit. The contract verifier restored the committed generation-0 fixture through the installed DSH migration chain to V3; the V3 regression suite also passed the installed upstream validators. The installed runtime is `0.1.5-rc.2`. The optional upstream check explicitly skips when DSH is absent; ordinary CI success must not be presented as an upstream-contract run. Checks used: ```text python -m unittest discover -s tests -q npm test python scripts/build_fixture.py --check python scripts/audit_public_tree.py --root . node scripts/verify_session_contract.mjs --fixture ``` Fixtures now use a separate header Zstandard frame, identified messages, declared tool calls, and valid step/migration shapes. Earlier fixtures passed the tolerant reader but were refused by a real DSH host; the contract check closes that gap for the canonical fixtures. Deliberately malformed unit cases test reader diagnostics and do not claim upstream admission. The release review additionally fixed three issues left by the initial development handoff: numeric-range handling of consecutive surface replacements, unrelated flat files counted as old logs, and query snapshots labelled generation 0 regardless of their header. Targeted regressions and current native report readback cover the repairs. ### Native source inputs | File | SHA-256 | | --- | --- | | `src/dsh_session_insights/analyzer.py` | `e54778240d5d3a407acb04b8727944348b6d9f02da301f398daf5a863f117c5f` | | `src/dsh_session_insights/plugin_bridge.py` | `e777b7e0e59a3d1a99af7cbcb502505e63874f6c0e9418bd6f4fafd76a90dcb8` | | `plugin/lib/index.js` | `0e112475d270829ddf7dcd7df6ec3894151f9cc8def9d468c5c54a9e6ec3e247` | | `src/dsh_session_insights/semantic.py` | `11437e90615056de89e278ffc40889b44957a1c160e6eed7d6525817a60f7aeb` | ## macOS native verification Environment: a separate DSH `0.1.5-rc.2` web profile on port 3081, isolated home, Python 3.12.2, and the working-tree Bundle linked into that profile. The existing host on port 3080 was not stopped, restarted, or reconfigured. Python is invoked afresh by the unchanged JS bridge, so the parser repairs were exercised without restarting DSH. All nine checks in `scripts/verify_native_acceptance.py` have evidence. The verifier returned `status: pass`, found a `dsh-session-insights` Skill call, and found no source-output or privacy violations. | Check | Readback | | --- | --- | | skill-discovery | Real `skill` call paired with a result containing the Skill instructions; UI reported successful discovery | | doctor | `ok: true` against the isolated home | | deterministic-cache | Cold: 0 hits / 5 misses; warm: 5 hits / 0 misses; refresh: 5 invalidations / 5 misses | | redacted-privacy | Current HTML/JSON artifacts pass credential and private-path sentinel checks | | semantic-complete | Current final report status `complete`, without fallback; evidence equality supports reuse of the previous full batch | | metrics-skip | `not_applicable`, no batch ids and no batches directory | | fallback | Empty project selection produces `fallback`, no batch ids and no batches directory | | output-boundary | A requested report under the source sessions tree is refused and creates no file | | process-cleanup | No Python bridge child remains; the isolated DSH host is intentionally retained | Current native runs (2026-09-11): | Run | Purpose | Outcome | | --- | --- | --- | | `run-20260911T044910Z-34520-77bd15` | Deterministic | 5 sessions, no unknown events or malformed rows | | `run-20260911T044922Z-34520-d0e6b9` | Semantic aggregation and finalization | `complete`, 5 sessions, no unknown events or malformed rows | | `run-20260911T045202Z-34520-c2df60` | Metrics | `not_applicable`, no queued batch work | | `run-20260911T045211Z-34520-b05ca3` | Empty project | `fallback`, no queued batch work | The original full model run `run-20260911T044127Z-34520-2fdecc` executed get/submit batch, get/submit aggregate, and finalize. It repaired the aggregate shape once and finished without fallback. The current repeat reused one cached facet and regenerated the aggregate: the old and new `semantic-evidence.json` objects were independently compared and are equal. This is reused full-batch evidence plus a fresh aggregate/finalize run, not a new full-batch execution. Semantic pipeline code and the bounded batch evidence are unchanged by the release-review repairs. The private native acceptance manifest SHA-256 is `80b3f03ef73f55f83451d2414e8309c53826fd8be29fb1795460b150725c94d1`. Raw host logs, credentials, and private evidence directories are not included in the repository or package. This manifest binds source-native checks, not a subsequently packed artifact; package installation/parity and public download equality have their own release evidence. ## Release boundary Publication requires the exact candidate commit's CI, final document review, package identity/installation checks, and public readback. Their final results belong in the release receipt rather than being inferred from this native record. The scratch host is left running for the user. Any required restart remains a manual user action. No working DSH profile is upgraded by this release task.