# Official-first review: DSH 0.2.0-rc.2

## Target and evidence

The sole admitted target is official [`dsh-v0.2.0-rc.2`](https://github.com/deepseek-ai/deepseek-harness/tree/639ed015397290b3745d163aafe02ffee4aa3f84), commit `639ed015397290b3745d163aafe02ffee4aa3f84`. Compare it with the retained [rc.1 baseline](./official-first-020-rc1.md) using the [official source comparison](https://github.com/deepseek-ai/deepseek-harness/compare/dsh-v0.2.0-rc.1...dsh-v0.2.0-rc.2). The signed installed Windows Desktop `dsh/desktop-runtime.json` is 2,817,387 bytes, SHA-256 `29561160fb7825c3968708f5700564f4381a976985fc270ee5dcc42e5a0a3a54`, and lists 287 shared packages. Desktop, Core and Desktop Host report rc.2; the 16 declared DSH peers resolve rc.2, Cordis 4.0.4 and schemastery 3.18.4. The descriptor establishes peer ownership, not plugin activation, Electron integration or live provider calls.

## Public contracts and decisions

| Surface | Official support / remaining gap | Decision and retirement trigger |
|---|---|---|
| Native model adapter and SDK | Published [`@deepseek-ai/dsh-llm-pi-ai@0.2.0-rc.2`](https://registry.npmjs.org/@deepseek-ai/dsh-llm-pi-ai/-/dsh-llm-pi-ai-0.2.0-rc.2.tgz) depends on pi-ai `^0.87.1`. The native SDK now passes branded `TranscriptContext` to providers, with prompt and tools folded into system messages. | **Migrate** the plugin-owned provider bridge and estimated admission to exact pi-ai `0.87.1`; count each normalized message as a lower bound even when earlier usage anchors omit changed prefixes. Retain native transport and the same stream object. Retire this bridge only when official account-scoped metadata and admission preserve these contracts. |
| Native Auto authorization review | rc.2 `classifyRisk` is strictly fail-closed but freezes `temperature: 0` into an unscoped public `ctx.llm.stream` request; pi-ai forwards every defined Responses temperature. No verified supplier contract establishes that `supports.thinking` determines temperature compatibility. | **Retain a default-off explicit plugin override** on the managed account-discovered Responses route: `github-copilot.responsesOmitTemperature` omits temperature from every managed Responses request only when configured true. This can mitigate the reported reviewer error but changes request semantics for all requests on that protocol. Preserve the Core request, parser, cancellation, one attempt and nonmanaged routes. Never auto-enable from metadata; canonical Core-owned routes remain outside scope. Retire when a verified supplier contract or official adapter provides truthful per-request sampling compatibility and exact-source qualification preserves deny/malformed/error/cancel behavior. |
| Profile bundle patches | Public `bundlePatchPaths` accepts a bundle's string or ordered array of patches. Signed rc.2 `dsh-web-app` lists five patches, whereas the old plugin preflight accepted only one string. | **Migrate** read-only preflight to the published resolver and compose every patch in order, rejecting malformed manifests and unsupported routing. Retire only after an official installer provides equivalent fail-closed structural admission. |
| Models UI, authorization, Remote, Session and search | Published rc.2 package entrypoints and inspected public seams retain the rc.1 forms. The official rc.2 UI-agent-preset removes its `developerTools` injection, which this plugin does not use. | **Retain** the public Host/Client/Remote integrations and their guarded ownership. Retirement requires verified official equivalent behavior plus migration and runtime acceptance; lack of a new public seam is not evidence of complete parity. |
| Desktop package graph | Signed descriptor has the current shared peers; pi-ai and Zod are not shared Host packages. The bundled adapter resolves pi-ai 0.87.1 and Zod separately. | **Retain** required Host peers and Client external React; do not copy bundled dependencies or patch Core. Recheck effective profile resolution before Desktop installation because a stale profile-local Host peer may shadow the bundle. |

The unchanged-tagged-source and exact published-artifact fixtures must pass on Windows and Linux before publication. Local synthetic HTTP, source markers, package imports and signed peer metadata do not prove account entitlement, Copilot model calls, loaded Desktop plugin state or profile installation. The Desktop owner performs installation separately after verified publication and preflight; no credentials, model settings or Session histories are migrated by this change.
