Single contributor fix — thanks @ken-jo (#689)
When an interrupted `/ctx-upgrade` swap leaves the plugin cache half-populated, `scripts/plugin-cache-integrity.mjs` itself can be among the missing files. The doctor previously reported only `integrity helper unavailable`, masking that the MCP launch entrypoint (`start.mjs` / server bundle) was also gone — the actual reason `node ${CLAUDE_PLUGIN_ROOT}/start.mjs` failed and the MCP server never started.
Fix
- New `findMissingLaunchFiles(pluginRoot)` — dependency-free fs-only check of `start.mjs` (the plugin `command` target, no fallback) and the server (`server.bundle.mjs` with `build/server.js` fallback; flagged only when both are absent).
- `checkPluginCacheIntegritySync` now calls it on the integrity-helper-unavailable path and surfaces the specific missing files + the reinstall command, replacing the opaque `helper unavailable` text.
- 5 regression test cases pin the behaviour. Folded into `tests/core/cli.test.ts` per CONTRIBUTING L282.
Upgrade
```bash
/context-mode:ctx-upgrade
```
No behaviour change when the helper loads normally. ADR-0001 multi-writer invariant preserved.