# v0.4.0-rc.5 Release Notes

## Version

`v0.4.0-rc.5`

## Dist Tag

`next`

`0.4.0-rc.5` is a next-channel prerelease for the no-model multi-agent relay
preview package surface. Do not move `latest`.

Registry `persona-harness@next` points at `0.4.0-rc.5` with gitHead
`78addeb5dc992973589e7f99635fe8ca277e4ad6`.

## Summary

This release packages the R1-R5 relay preview work after published
`@next=0.4.0-rc.4` remained behind the current local package surface:

- R1 opt-in relay agent map for `test-writer`, `jaeki`, and `roach`;
- R2 relay coordinator state in `workflow relay status/next --json`;
- R3b deterministic role artifact gates;
- R4 read-only `workflow relay validate --json`;
- R5 compact human text mode for `workflow relay validate`.

The relay preview remains read-only/handoff-only. It does not include native
subtask dispatch, model/OpenCode execution, auto-generated role artifacts,
report auto-fill, ticket auto-archive, or finish/archive/check gate weakening.

## Package-Surface Evidence

External package-surface/no-model current-tarball smoke passed for the relay
preview slices before this release prep:

- R1 relay preview smoke on HEAD
  `12562195719745ed371320d04590c68037ab0b05`;
- R2 relay coordinator smoke on HEAD
  `4788135b01447f7cbfde3198abfcd45640893ce6`;
- R3b relay artifact gate smoke on HEAD
  `7d9329449063888092f9a9a1a0141f94728c5e0e`;
- R4 relay validate JSON smoke on HEAD
  `ebc57dd2ae72c947255f472145291d424f5d2337`;
- R5 relay validate text smoke on HEAD
  `24f85001605b7c121f11a2933a3ebfd0453434a7`.

Those smokes used fresh local/current tarballs, not registry `@next`. Registry
package-surface smoke for rc5 is recorded below after publish/gitHead
verification.

## Relay Preview Surface

- `bootstrap backend --multi-agent-preview` can generate the opt-in OpenCode
  agent map while preserving existing `.opencode/opencode.json` plugin/custom
  agent fields.
- `workflow relay status --json` and `workflow relay next --json` expose relay
  state such as current role, role completion state, scoped input files, prompt
  block, required output artifact, role artifacts, blockers, and gate command.
- Role progression remains deterministic and artifact-gated:
  `test-writer` -> `jaeki` -> `roach` -> closure next.
- Missing, incomplete/template-like, and role-boundary-violating artifacts block
  progression with explicit role artifact blocker IDs.
- `workflow relay validate --json` reports readiness/blockers without writing
  artifacts or progressing state.
- `workflow relay validate` human text summarizes the current ticket, role,
  readiness, blocker, reason, required artifact, gate command, and authoring
  hints.

## No-Write / No-Dispatch Boundaries

- Native subtask dispatch remains deferred.
- The relay preview does not run model/OpenCode work.
- The validator does not create role directories/files.
- Incomplete and complete artifact hashes remain unchanged after validation.
- `workflow archive` and `workflow finish implement` remain authoritative and
  continue to block when verification/report/evidence/pending-ticket blockers
  remain.

## Post-Publish Registry Facts

Observed after publish:

- `persona-harness@0.4.0-rc.5` exists on npm;
- registry gitHead: `78addeb5dc992973589e7f99635fe8ca277e4ad6`;
- registry shasum: `e101c31646d2ba080481b19b9231fd30d9ac9674`;
- dist-tags: `next=0.4.0-rc.5`, `latest=0.3.9-alpha.8`,
  `alpha=0.3.9-alpha.8`.

## Registry Package-Surface Smoke

External registry-only package-surface smoke PASS:

- install source: npm registry only, `npm install -D persona-harness@next`;
- installed version: `persona-harness@0.4.0-rc.5`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rc5-registry-package-surface-20260630-171529`;
- default bootstrap config remained `executeVerification=false`,
  `systemConstitution=true`, `writeDeny=false`, and `idleContinuation=false`;
- strict bootstrap config printed/wrote `executeVerification=true`,
  `systemConstitution=true`, `writeDeny=false`, and `idleContinuation=false`,
  with no generated-app certification or closure guarantee wording;
- `ph workflow relay validate` human text worked in missing, incomplete, and
  complete role-artifact states and included ticket, role, readiness, blocker,
  reason, artifact, gate command, hints, and read-only/no native dispatch/no
  artifact writes/gates authoritative boundaries;
- `ph workflow relay validate --json` remained compatible with
  `action=validate`, readiness/reason/incomplete roles, complete-state
  `blockers=[]`, complete `roleCompletionState`, and closure-next gate command;
- validation preserved no-write behavior: missing validate did not create the
  roles directory, and incomplete/complete artifact hashes were unchanged;
- strictness remained: check WARN/actionable, archive exited 1, and finish
  exited 1 with template reports and pending ticket; no report auto-fill, ticket
  auto-archive, or finish/check/archive weakening.

## Claim Boundaries

This release candidate is product/package-surface/no-model evidence only. It is
not eval/A-B proof, PH superiority proof, generated app product-quality
certification, broad architecture correctness, general reliability, a closure
guarantee, a token-savings guarantee, OMO parity, or an autonomous completion
claim.

## Local R1 Injection Guidance Cleanup And Measurement

Local post-rc5 commits through `28efb8e docs: record injection cleanup and
code-nav preview` have a QA-verified codegraph-OFF CLI output proxy measurement
in `.persona/evidence/token-baseline.json`:

- injection guidance is split into Tier0 source-of-truth boundaries, Tier1
  implement/continue workflow rail, and Tier3 finish/review/archive
  verification;
- plan prompts and workflow output now direct agents to use PH-owned surfaces
  first: accepted plan, injection summary, workflow check/closure, ast-grep
  conventions, relay handoff, and bearshell;
- external codegraph/code-nav tools are optional only when actually installed;
  they are not presented as PH-owned or token-saving;
- label: `post-r1-cleanup-plus-rmcp1a-local`; included commits: `5b8d2ef`,
  `5fd5a14`, and `28efb8e`;
- R0 baseline: 26,572 bytes / 25,274 chars / 2,912 whitespaceTokens / 6,319
  chars/4 proxy;
- latest same-method measurement: 26,619 bytes / 25,323 chars / 2,910
  whitespaceTokens / 6,331 chars/4 proxy;
- delta: +47 bytes / +49 chars / -2 whitespaceTokens / +12 chars/4 proxy;
- no measured reduction in this same-method codegraph-OFF CLI output proxy
  scenario; whitespace token proxy decreased by 2, but chars/4 proxy increased
  by 12, and neither is provider-token accounting;
- therefore there is no token-saving or product-efficacy claim, no PH-owned MCP
  registration claim, and R2 cache design is not justified by this measurement
  alone;
- registry `@next` remains the rc5 release package until a later publish verifies
  a new gitHead.

## Current-Tarball Code-Nav Package-Surface Smoke

External no-model product/package-surface smoke PASS for the R-MCP.1a code-nav
CLI preview:

- source: fresh local/current tarball from
  `5fd5a1456ef007d37b37fc5fb22b9849f12485ef`
  (`5fd5a14 feat(cli): add code-nav package surface`), not registry `@next` and
  not origin-only;
- package/version: `persona-harness@0.4.0-rc.5`;
- tarball:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rmcp1a-code-nav-package-surface-20260630-180844/persona-harness-0.4.0-rc.5.tgz`;
- npm shasum: `758babb2f6a7a2c45331e02026b541c28937d60e`;
- sha256: `59a097989fc21bbf4ff75acf19c754be6468a6a2b28f8c146213ff5e7adb4e4b`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rmcp1a-code-nav-package-surface-20260630-180844`;
- tarball contains exactly:
  - `package/packages/lsp-tools-mcp/README.md`;
  - `package/packages/lsp-tools-mcp/bin/code-nav-mcp.mjs`;
  - `package/packages/lsp-tools-mcp/package.json`;
- clean tarball install produced `persona-harness@0.4.0-rc.5`;
- `code-nav-mcp.mjs --help` exits 0 with non-empty preview usage and boundary
  text: opt-in package surface only, no OpenCode registration by default, no
  codegraph/indexer, no token-saving claim, unavailable tools reported honestly;
- `capabilities --json` exits 0 and includes `ast-grep.availability`,
  `filesystem.text-search`, `mcpProtocolServer=false`,
  `registeredWithOpenCode=false`, and `tokenSavingsClaimed=false`;
- with `PATH` limited to the Node directory, ast-grep availability is reported
  unavailable with a limitation, without crash or fake pass;
- `search --json TaskController fixture/src/main/java` returns bounded
  filesystem matches; missing root returns unavailable and empty matches;
- no `.opencode` directory or MCP registration is created.

This is current/local tarball evidence only, not registry `@next` behavior unless
a later publish verifies registry gitHead. It is not OpenCode MCP registration
evidence, full MCP protocol evidence, token-savings evidence, eval/A-B proof,
codegraph replacement proof, OMO parity, PH superiority, generated app
certification, model/OpenCode/native dispatch evidence, broad reliability, or a
closure guarantee.

## Current-Tarball Code-Nav MCP Protocol Smoke

External no-model package-surface smoke PASS for the R-MCP.1b minimal stdio MCP
protocol surface:

- source: fresh local/current tarball from
  `abaef744ad9e091215911d3feeac40ba1569ca22`
  (`abaef74 feat(cli): add code-nav MCP protocol surface`), not registry
  `@next`;
- package/version: `persona-harness@0.4.0-rc.5`;
- tarball:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rmcp1b-code-nav-mcp-protocol-20260630-220253/persona-harness-0.4.0-rc.5.tgz`;
- npm shasum: `c050ad0c799dfd9ecabe34b303cff12806a401fb`;
- sha256: `4432a0e17da2c81db7e7fcbf99313d2dab2537f919f6a0d7daafd7d40d31e77a`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rmcp1b-code-nav-mcp-protocol-20260630-220253`;
- package entries include `README.md`, `bin/code-nav-mcp.mjs`,
  `lib/code-nav-core.mjs`, `lib/code-nav-mcp.mjs`, and `package.json` under
  `package/packages/lsp-tools-mcp`;
- clean install produced `persona-harness@0.4.0-rc.5`;
- help shows `ph-code-nav-mcp mcp`, minimal stdio MCP protocol server, no
  OpenCode registration by default, no codegraph/indexer, and no token-saving
  claim;
- `capabilities --json` reports `mcpProtocolServer=true`,
  `registeredWithOpenCode=false`, `tokenSavingsClaimed=false`,
  `ast-grep.availability`, and `filesystem.text-search`;
- CLI search compatibility remained: fixture search returns matches, missing
  query exits 1 with usage, and missing root returns `status=unavailable` with
  `matches=[]`;
- framed stdio MCP covered `initialize`, `notifications/initialized`,
  `tools/list`, and `tools/call` for `status`, `search_text`, and
  `ast_grep_availability`; `tools/list` contained exactly
  `ast_grep_availability`, `search_text`, and `status`;
- normal PATH found ast-grep via `/opt/homebrew/bin/sg`; limited PATH reported
  `ast_grep_availability` unavailable with no crash or fake pass;
- no `.opencode` directory or registration was created, and there was no
  OpenCode/model/eval/native dispatch run.

This is current/local tarball package-surface evidence only, not registry
`@next` behavior unless a later publish verifies registry gitHead. R-MCP.1b is
minimal stdio MCP protocol evidence, not OpenCode registration evidence;
R-MCP.1c opt-in registration evidence is recorded below. It is not provider-token
accounting, token-saving evidence, product-efficacy evidence, codegraph
replacement proof, OMO parity, PH superiority, generated app certification,
broad reliability, or a closure guarantee.

## Current-Tarball Code-Nav OpenCode Registration Smoke

External package-surface smoke PASS for the R-MCP.1c opt-in OpenCode config
registration surface:

- source: fresh local/current tarball from
  `42348cc1aa0dacde81080741e8ad8531305690c2`
  (`42348cc feat(cli): add code-nav MCP bootstrap opt-in`), not registry
  `@next`;
- package/version: `persona-harness@0.4.0-rc.5`;
- tarball:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rmcp1c-code-nav-opencode-registration-20260630-222627/persona-harness-0.4.0-rc.5.tgz`;
- npm shasum: `052e9bf6e3c501fa3bd7c431d965d59149058757`;
- sha256: `2cb078c3ca5a72dc357d4c78e1b7f91b318b0c7bb4d8e29403215250f0012162`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rmcp1c-code-nav-opencode-registration-20260630-222627`;
- package entries include `README.md`, `bin/code-nav-mcp.mjs`,
  `lib/code-nav-core.mjs`, `lib/code-nav-mcp.mjs`, and `package.json` under
  `package/packages/lsp-tools-mcp`;
- default clean install plus init/bootstrap exits 0 and does not add
  `.opencode/opencode.json` `mcp.persona-harness-code-nav`;
- opt-in bootstrap with `npx ph bootstrap backend --code-nav-preview` exits 0
  and prints Code-nav MCP preview, opt-in only, no codegraph/indexer, and no
  token-saving claim;
- seeded `.opencode/opencode.json` plugin, agent, custom MCP, and top-level
  theme entries are preserved;
- generated `mcp.persona-harness-code-nav` has `type=local`, `enabled=true`,
  and command
  `["node", <installed package path to packages/lsp-tools-mcp/bin/code-nav-mcp.mjs>, "mcp"]`;
- generated target file exists;
- generated command passed no-model framed JSON-RPC
  `initialize`, `tools/list`, and `tools/call` for `status`, `search_text`, and
  `ast_grep_availability`;
- `tools/list` contained exactly `ast_grep_availability`, `search_text`, and
  `status`;
- `status` reported `mcpProtocolServer=true`, `registeredWithOpenCode=false`,
  and `tokenSavingsClaimed=false`;
- fixture search returned bounded matches, missing root returned unavailable,
  and limited PATH reported ast-grep unavailable with no crash or fake pass.

This is local/current tarball package-surface evidence only, not registry
`@next` behavior unless a later publish verifies registry gitHead. Registration
is opt-in only; default bootstrap has no registration. R-MCP.1c registers the
minimal PH code-nav MCP server in config, not OMO/external codegraph, codegraph
replacement, or an LSP daemon. There is no model/OpenCode/eval/native dispatch
evidence, provider-token accounting, token-saving/product-efficacy evidence, OMO
parity, PH superiority, generated app certification, broad reliability, or a
closure guarantee.

## R-MCP.2 Development-Navigation Probe

QA verified R-MCP.2 as PARTIAL single-run development-navigation evidence:

- evidence: `.persona/evidence/development-navigation-probe.json`;
- raw root:
  `.persona/evidence/development-navigation-probe-2026-06-30T121859218Z`;
- HEAD/model/surface: `20a4ff9`, `openai/gpt-5.4-mini-fast`,
  `opencode run --pure`;
- codegraph/OMO OFF was verified with `codegraphOff=true`,
  `opencodePure=true`, `PH_R0_CODEGRAPH_OFF=1`, OMO sparkshell disabled,
  CODEGRAPH variables cleared, and raw fixture dirs without `.codegraph` or
  `.opencode`;
- A/B used the same tiny Java/Spring Controller->Repository violation fixture,
  model, and timeout; B differed by explicit PH code-nav CLI preview command
  only;
- outcome was equal: both runs exited 0, fixed the violation to route
  `TodoController -> TodoService -> TodoRepository`, and `observe` passed for
  `controller.repository-dependency` and `controller.service-dependency`;
- narrow navigation-shape signal: B-A tool use -7, read calls -3, unique read
  paths -3, read output chars -1509, tool output chars -8975, OpenCode stdout
  bytes -8218;
- no token/time reduction was proven: elapsed +20675ms, input tokens +7008,
  output tokens +79, cache-read tokens +13824.

This probe observed fewer broad tool/read outputs with the PH code-nav prompt,
but it is not provider billing, token-saving evidence, product-efficacy evidence,
PH-owned full MCP evidence, `.opencode` registration evidence, MCP protocol
evidence, codegraph replacement proof, PH superiority, eval proof, generated app
certification, broad reliability, or a closure guarantee.

Eval remains stopped. `docs/current/injection-value-status.json` remains
`injection-effect-not-proven`.

## Verification

Release-prep verification for this worktree:

```bash
npm test
npm run typecheck
npm run build
npm run check:docs
npm run smoke:product-mvp
npm pack --dry-run
git diff --check
```

Record the observed result in the release-prep report before publish.

Observed release-prep verification:

- `npm test`: PASS, 74 files / 517 tests.
- `npm run typecheck`: PASS.
- `npm run build`: PASS.
- `npm run check:docs`: PASS.
- `npm run smoke:product-mvp`: PASS.
- `npm pack --dry-run`: PASS; record exact filename, size, shasum, and file count
  in the release-prep report generated after final docs edits.
- `git diff --check`: PASS.
