# v0.4.0-rc.10 Release Notes

## Version

`v0.4.0-rc.10`

## Dist Tag

`next`

`0.4.0-rc.10` is published under `next` for the P6 opt-in OpenCode LSP MCP
wrapper package surface. `latest` did not move.

Registry verification:

- `persona-harness@next`: `0.4.0-rc.10`;
- gitHead: `58f9ac255b615f40cdd8046e9a73b772e7ceae36`;
- shasum: `f00f78e578a4b89390ffb8a91c907bf5033189c7`;
- dist-tags: `next=0.4.0-rc.10`, `latest=0.3.9-alpha.8`,
  `alpha=0.3.9-alpha.8`;
- tag: `v0.4.0-rc.10` points at
  `58f9ac255b615f40cdd8046e9a73b772e7ceae36` after registry gitHead
  verification.

## Summary

This candidate packages the opt-in LSP MCP wrapper:

- `ph bootstrap backend --lsp-preview`;
- root bin `ph-lsp-mcp`;
- package surface `packages/lsp-mcp`;
- missing dependency unavailable facade that stays protocol-alive and exposes
  `lsp_status` only.

## Included Behavior

`ph bootstrap backend --lsp-preview` registers
`mcp.persona-harness-lsp` in `.opencode/opencode.json` while preserving existing
OpenCode plugin, agent, MCP, and top-level config entries.

The wrapper is intentionally conservative:

- if `@theupsider/lsp-mcp` or a configured upstream LSP MCP is unavailable, the
  MCP server remains alive and reports unavailable state through `lsp_status`;
- it does not expose fake symbol, definition, or reference tools when the
  upstream dependency or Java language server is missing;
- proxying requires both the upstream LSP MCP and Java LSP availability
  (`PH_LSP_JAVA_SERVER` or an equivalent verified server path);
- no real Java/Spring LSP tool call has been observed yet.

This is an opt-in package/runtime surface. It is not default LSP registration,
not code-nav relabeling, not Codex support, not token-saving/provider-token
evidence, not product-efficacy/navigation-benefit evidence, and not generated
app certification or a broad reliability/closure guarantee.

## Package-Surface Evidence

Pre-release local/current evidence:

- `23465e2b3a6a503b2dc4eff510ebbe0fb96186ad` added the opt-in LSP MCP wrapper;
- `e50436cecc3041fb140c3b6732ea4646d5982159` recorded the local/current
  wrapper smoke;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/p6-lsp-mcp-local-current-23465e2-20260701-214302`;
- local/current tarball smoke accepted the behavior as package version
  `0.4.0-rc.9`, before this rc10 release-prep bump;
- npm shasum: `cff4ffae5601392efc4e3e2110b33409612f2e42`;
- sha256:
  `6472a7b19a826b80612d76aa8a303e9735cd8f33b6bb3c2637c261af5ec876b6`;
- package entries included `packages/lsp-mcp` manifest, README, bin, core,
  stdio libs, root `ph-lsp-mcp`, and optional `@theupsider/lsp-mcp@1.1.2`
  metadata;
- default bootstrap did not register `mcp.persona-harness-lsp`;
- opt-in `--lsp-preview --no-developer-mcp` registered only the wrapper and
  preserved existing OpenCode config;
- missing-dependency facade passed newline and framed MCP with protocol-alive
  `lsp_status` only, unavailable status, clean stderr, and `isError:true` for
  fake `lsp_definition` or unknown tool calls;
- proxy guard passed with fake binaries: upstream-only and Java-LSP-only stayed
  status-only, while fake upstream plus fake Java LSP exposed upstream
  `lsp_definition`.

Release-prep verification must pass before publish:

- `npm run check:docs`;
- `git diff --check`;
- `npm run check:injection-value`;
- `npm run typecheck`;
- `npm test`;
- `npm run build`;
- `npm run smoke:product-mvp`;
- `npm pack --dry-run --json`;
- registry pre-publish state check for `next`, `latest`, and `alpha`.

## Registry Package-Runtime Smoke

External registry-only smoke PASS:

- source: registry `persona-harness@next`, installed as `0.4.0-rc.10`;
- registry gitHead: `58f9ac255b615f40cdd8046e9a73b772e7ceae36`;
- registry shasum: `f00f78e578a4b89390ffb8a91c907bf5033189c7`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rc10-registry-lsp-mcp-20260701-220032`;
- registry package includes `packages/lsp-mcp` manifest, README, bin, core,
  stdio libs, root `ph-lsp-mcp`, and optional `@theupsider/lsp-mcp@1.1.2`
  metadata;
- default backend bootstrap does not register `mcp.persona-harness-lsp`;
- opt-in `--lsp-preview --no-developer-mcp` registers the wrapper and preserves
  config; no `.codegraph` auto-create was observed;
- help/capabilities preserve opt-in, no-auto-install, no-code-nav-relabeling,
  and no token/product-quality boundaries;
- missing dependency facade passed newline/framed MCP: clean stderr,
  initialize/tools-list/tools-call, `lsp_status` only, unavailable status, and
  `isError:true` for fake `lsp_definition` / unknown tools;
- proxy guard with fake binaries passed: upstream-only and Java-LSP-only stay
  status-only, while fake upstream plus fake Java LSP exposes upstream
  `lsp_definition`;
- `opencode mcp list --pure` connected, meaning protocol-alive wrapper/facade
  only.

## Boundaries

Do not claim:

- registry evidence beyond this package/runtime surface;
- fake LSP, code-nav relabeling, or code-nav replacement;
- Codex support;
- token saving, provider-token saving, product efficacy, or navigation benefit;
- real Java LSP tool-call observation;
- default LSP registration or A/B effectiveness;
- generated-app product quality, generated-app certification, broad reliability,
  or closure guarantee.
