# v0.4.0-rc.6 Release Notes

## Version

`v0.4.0-rc.6`

## Dist Tag

`next`

`0.4.0-rc.6` is a next-channel prerelease refresh for the PH code-nav preview
package surface. Do not move `latest`.

Registry `persona-harness@next` points at `0.4.0-rc.6` with gitHead
`30ded278ab5726e4f910d94b62d131647963807b`.

## Summary

This candidate packages post-rc5 code-nav package-surface work that is already
verified on fresh local/current tarballs:

- minimal stdio MCP protocol server for PH code-nav preview;
- opt-in OpenCode config registration through
  `npx ph bootstrap backend --code-nav-preview`;
- default bootstrap remains no-registration;
- existing `.opencode/opencode.json` plugin, agent, custom MCP, and top-level
  entries are preserved during opt-in registration.

## Package-Surface Evidence

R-MCP.1b External current/local tarball package-surface smoke PASS:

- source HEAD: `abaef744ad9e091215911d3feeac40ba1569ca22`
  (`abaef74 feat(cli): add code-nav MCP protocol surface`);
- 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`;
- framed stdio MCP `tools/list` exposed exactly
  `ast_grep_availability`, `search_text`, and `status`;
- `status` reported `mcpProtocolServer=true`,
  `registeredWithOpenCode=false`, and `tokenSavingsClaimed=false`;
- normal PATH found ast-grep via `/opt/homebrew/bin/sg`; limited PATH reported
  ast-grep unavailable with no crash or fake pass.

R-MCP.1c External current/local tarball package-surface smoke PASS:

- source HEAD: `42348cc1aa0dacde81080741e8ad8531305690c2`
  (`42348cc feat(cli): add code-nav MCP bootstrap opt-in`);
- 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`;
- default clean install plus init/bootstrap does not add
  `mcp.persona-harness-code-nav`;
- opt-in `npx ph bootstrap backend --code-nav-preview` adds
  `.opencode/opencode.json` `mcp.persona-harness-code-nav` with `type=local`,
  `enabled=true`, and a local packaged code-nav MCP command;
- generated command passed no-model JSON-RPC `initialize`, `tools/list`, and
  `tools/call` for `status`, `search_text`, and `ast_grep_availability`;
- existing plugin, agent, custom MCP, and top-level theme entries are preserved.

R-MCP.2 remains a PARTIAL development-navigation probe:

- one actual OpenCode development run observed fewer broad tool/read outputs
  with the PH code-nav prompt;
- no token/time reduction was proven;
- this is not provider billing or token-saving evidence.

## Boundaries

This is a next-channel prerelease candidate only. The evidence above is
local/current tarball package-surface evidence until post-publish registry
verification confirms the rc6 gitHead.

Do not claim:

- default code-nav registration;
- registry `@next` rc6 behavior before `npm view` verifies gitHead;
- model/OpenCode/eval/native dispatch evidence;
- provider-token savings, token-saving, or product efficacy;
- codegraph replacement, OMO parity, or PH superiority;
- generated app certification, broad reliability, or a closure guarantee.

OpenCode real-run A/B is a separate post-refresh measurement and is not an rc6
release blocker.

## Post-Publish Registry Facts

Observed after publish:

- `persona-harness@0.4.0-rc.6` exists on npm;
- registry gitHead: `30ded278ab5726e4f910d94b62d131647963807b`;
- registry shasum: `ab3e2074d739add4bca547ceb9a2961b409e6250`;
- dist-tags: `next=0.4.0-rc.6`, `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.6`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rc6-registry-code-nav-package-surface-20260630-230144`;
- default init/bootstrap exited 0 and `.opencode/opencode.json` did not contain
  `mcp.persona-harness-code-nav`;
- strict bootstrap with `bootstrap backend --strict` exited 0 and printed/wrote
  `executeVerification=true`, `systemConstitution=true`, `writeDeny=false`, and
  `idleContinuation=false`, with no generated-app certification or closure
  guarantee wording;
- opt-in `bootstrap backend --code-nav-preview` exited 0, preserved existing
  plugin, agent, custom MCP, and top-level entries, and added
  `mcp.persona-harness-code-nav` with `type=local`, `enabled=true`, and a node
  command to the installed code-nav MCP server;
- `--help`, `capabilities --json`, and `search --json` fixture/missing-root
  paths worked;
- capabilities reported `mcpProtocolServer=true`,
  `registeredWithOpenCode=false`, and `tokenSavingsClaimed=false`;
- generated command protocol smoke passed no-model framed JSON-RPC
  `initialize`, `tools/list`, and `tools/call` for `status`, `search_text`, and
  `ast_grep_availability`;
- limited PATH reported ast-grep unavailable without crash or fake pass;
- `workflow check` remained exit 0 WARN/actionable, and
  `workflow finish implement` still exited 1 for missing verification
  evidence/template reports; no finish/check weakening.

This is registry package-surface/protocol-surface evidence only. It is not
model/OpenCode/eval/native dispatch evidence, 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.

## Post-rc6 Local Transport Compatibility Smoke

External local/current tarball OpenCode MCP transport compatibility smoke PASS:

- source HEAD: `38f4e8b1100bd6812212d4d5dfbebbef4d2b10eb`
  (`38f4e8b fix(cli): support OpenCode MCP newline transport`);
- source type: fresh local/current tarball only, not registry `@next`;
- package/version: `persona-harness@0.4.0-rc.6`;
- tarball:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rmcp-newline-transport-38f4e8b-20260630-235636/persona-harness-0.4.0-rc.6.tgz`;
- npm shasum: `ade4b761d87d01c76a0e42b03d73d6bae3c1be15`;
- sha256: `f74cf365b69b37b89f4a0cd0039dcea67b596682d7074bff31ec671686b80357`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rmcp-newline-transport-38f4e8b-20260630-235636`;
- pack/install observed `prepack -> npm run build`, and clean temp install from
  tarball installed `0.4.0-rc.6`;
- default init/bootstrap did not register `mcp.persona-harness-code-nav`;
- opt-in `bootstrap --code-nav-preview` registered
  `mcp.persona-harness-code-nav` and preserved existing plugin, agent, custom
  MCP, and top-level entries;
- direct Content-Length framed JSON-RPC returned Content-Length framed
  responses;
- direct newline-delimited JSON-RPC returned newline responses with no
  Content-Length;
- `tools/list` exposed `ast_grep_availability`, `search_text`, and `status`;
- fixture `search_text` matched, missing-root search returned unavailable, and
  limited PATH reported ast-grep unavailable without crash or fake pass;
- `opencode mcp list --pure` exited 0 and showed
  `persona-harness-code-nav` connected.

This records an OpenCode local MCP newline transport/adoption compatibility fix
only. It is local/current tarball package-surface/adoption evidence, not
registry `@next` behavior until a later publish verifies this gitHead. It is not
model prompt, eval, native dispatch, generated app trial, provider-token
accounting, token-saving evidence, product-efficacy evidence,
navigation-benefit proof, codegraph/OMO integration or replacement, PH
superiority, generated app certification, broad reliability, or a closure
guarantee.

## Post-rc6 Parser and Guidance Hygiene

R-MCP.4/R-MCP.4b QA PASS:

- `f93d52d` added namespaced code-nav MCP tool detection and guidance for
  OpenCode tool names such as `persona-harness-code-nav_status`,
  `persona-harness-code-nav_search_text`, and
  `persona-harness-code-nav_ast_grep_availability`;
- `e52f73f3c3cdb36866d74aecb39757cdf520d0ee`
  (`e52f73f fix(cli): separate code-nav tool mentions`) separates actual JSON
  tool-name field calls from prose/free-text exact-name mentions;
- `codeNavToolCallCount` and `codeNavToolCallCounts` now count actual calls
  only;
- `codeNavToolMentionCount` and `codeNavToolMentionCounts` count prose/free-text
  mentions;
- QA verified R-MCP.3 raw logs as `codeNavToolCallCount=2`, with exact calls
  `persona-harness-code-nav_status=1` and
  `persona-harness-code-nav_search_text=1`;
- canonical call counts were `status=1`, `search_text=1`, and
  `ast_grep_availability=0`;
- prose mentions were separated as `codeNavToolMentionCount=2`;
- prose-only stdin fixture reports call count 0 and mention count 1;
- External smoke was not needed because this is repo-only metrics parser/test
  behavior.

This is parser accuracy, measurement hygiene, and discoverability hardening
only. It does not prove natural adoption, efficacy, token saving,
provider-token saving, navigation benefit, product efficacy, codegraph/OMO
integration or replacement, OMO parity, PH superiority, eval proof, generated
app certification, broad reliability, or a closure guarantee.

## Post-rc6 R1 Token Telemetry Infrastructure

R1 token telemetry External local/current tarball package-surface smoke PASS:

- source HEAD: `163a85e0433f6d713afa3f619b3cc6b2d2bcf100`
  (`163a85e fix(runtime): record token telemetry evidence`);
- source type: fresh local/current tarball only, not registry `@next`;
- package/version: `persona-harness@0.4.0-rc.6`;
- tarball:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/r1-token-telemetry-163a85e-20260701-030900/persona-harness-0.4.0-rc.6.tgz`;
- npm shasum: `1172d79ca49958dacb66fd06725ea8a4ede4062c`;
- sha256: `3008ad6de5f2bfe1f3279095a5704a4ebe20472e5fcf7ef6a83f2b3eac03bf39`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/r1-token-telemetry-163a85e-20260701-030900`;
- package includes runtime telemetry surfaces;
- installed package runtime wrote
  `.persona/evidence/token-usage/session-with-unsafe-key.json` from
  `message.updated` assistant events;
- unsafe session filename was sanitized, with the original session key preserved
  in the payload;
- latest-per-message dedupe was observed;
- aggregate totals were input 15, output 13, reasoning 2, cacheRead 31,
  cacheWrite 4, total 65;
- known `modelLimit=100` produced ratio 0.46;
- unknown modelLimit recorded null ratio with an explicit reason;
- `telemetry.tokenUsage=false` opt-out wrote no evidence.

This is measurement infrastructure only. It is local/current tarball evidence,
not registry `@next` behavior until a later publish verifies this gitHead. It is
not token-saving, provider-token-saving, product-efficacy, compaction
effectiveness, R2 compaction, R3 hashline, code-nav, dispatch, codegraph/OMO
integration or replacement, PH superiority, eval proof, generated app
certification, broad reliability, or a closure guarantee.

## Post-rc6 R2 Compaction Trigger Mechanics

R2 compaction trigger External local/current tarball runtime package-surface
smoke PASS:

- source HEAD: `a0116785e7e013154c4e4c8a75b4d87515fce828`
  (`a011678 fix(runtime): add measured compaction gate`);
- source type: fresh local/current tarball only, not registry `@next`;
- package/version: `persona-harness@0.4.0-rc.6`;
- tarball:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/r2-token-compaction-a011678-20260701-032810/persona-harness-0.4.0-rc.6.tgz`;
- npm shasum: `5465781a54c809ea09d4c42c8eb4d032fd0a44b7`;
- sha256: `2cdd812a82d9a46efb2446808162cec4fe3a54c470e75f77c99120e370a594d9`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/r2-token-compaction-a011678-20260701-032810`;
- package included `dist/runtime/token-compaction.js`, its `.d.ts`,
  `token-telemetry.js`, hooks, and config surfaces;
- default/off fixture wrote token usage ratio 0.8, made zero summarize calls,
  and wrote no compaction evidence;
- opt-in trigger fixture used `enforce.compaction.enabled=true`,
  threshold 0.78, and known ratio 0.8;
- opt-in trigger called fake `client.session.summarize` exactly once with
  `{ path:{id}, query:{directory}, body:{providerID, modelID} }` and no
  `auto:true`;
- evidence schema `token-compaction.1` recorded status `triggered`,
  beforeMeasurement ratio 0.8, and afterMeasurement measured false with a
  no-token-saving-claim reason;
- skip cases covered ratio-unavailable, below-threshold,
  summarize-client-unavailable, and cooldown-active.

This is default-off, measurement-gated trigger mechanics and evidence shape
only. It is local/current tarball evidence, not registry `@next` behavior until
a later publish verifies this gitHead. It is not real compaction effectiveness,
token-saving, provider-token-saving, product-efficacy, R3 hashline, code-nav,
dispatch, codegraph/OMO integration or replacement, PH superiority, eval proof,
generated app certification, broad reliability, or a closure guarantee. R2
remains deferred as a kept/effective lever until real provider telemetry shows
cacheRead or total-token movement.

## Post-rc6 External OpenCode CodeGraph Preview

External local/current tarball package-surface smoke PASS:

- source HEAD: `6e69ca3e78b8664384c83221297f336d4c7f9c8c`
  (`6e69ca3 feat(cli): add external codegraph preview`);
- source type: fresh local/current tarball only, not registry `@next`;
- package/version: `persona-harness@0.4.0-rc.6`;
- tarball:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/codegraph-preview-6e69ca3-20260701-120832/persona-harness-0.4.0-rc.6.tgz`;
- npm shasum: `37d27b36797edb243cf1cf4674219c4672140ca0`;
- sha256: `b3d5d44baea8e95f39a882ceb3cc117bf6bae7678982f89539431b2783b1f8a2`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/codegraph-preview-6e69ca3-20260701-120832`;
- default bootstrap created no `mcp.codegraph` entry and no `.codegraph`
  directory;
- missing-binary `--codegraph-preview` skipped/no-opped with guidance, created
  no `mcp.codegraph`, and created no `.codegraph`;
- present fake-binary `--codegraph-preview` registered OpenCode
  `mcp.codegraph` with command `["codegraph","serve","--mcp"]`, preserved
  existing config, and created no `.codegraph`.

This is external optional OpenCode CodeGraph MCP config/guidance evidence only.
It is local/current tarball evidence, not registry `@next` behavior until a
later publish verifies this gitHead. The External smoke used a fake binary for
config shape, so it is not real CodeGraph MCP connected evidence. It does not
claim Codex support, PH-owned codegraph, codegraph replacement, OMO parity,
token-saving, provider-token saving, product efficacy, PH superiority, eval
proof, generated app certification, broad reliability, or a closure guarantee.

## R-CG.2 External CodeGraph Real-MCP Measurement

QA verified R-CG.2 as PARTIAL/defer:

- target HEAD: local/current `b7adc7cc481baca07e6626ae6f91848b0dce3ef3`;
- registry `@next` was not used;
- evidence files:
  `.persona/evidence/codegraph-real-mcp-smoke-20260701T033048Z.json` and
  `.persona/evidence/codegraph-dev-ab-20260701T033048Z.json`;
- raw logs:
  `.persona/evidence/codegraph-rcg2-raw-20260701T033048Z/`;
- Stage 1 used temp npm-prefix `@colbymchenry/codegraph@1.1.6`, MIT, and
  explicit `codegraph init`;
- OpenCode MCP connected and emitted actual tool event
  `codegraph_codegraph_explore`, canonical `codegraph_explore`, call count 1;
- freshness caveat: `pendingChanges.added=1`, so this is not a clean-fresh
  claim;
- Stage 2 used `--codegraph-preview` for B, MCP connected, and explicit
  `.codegraph` status had `pendingChanges` zero;
- both A/B fixed the source-level Controller-to-Repository violation through
  `TodoService`, and `observe` passed.

Measurement:

| Condition | CodeGraph calls | Elapsed | Tool uses | Reads | Read chars | Provider total / input / output / reasoning / cacheRead |
| --- | ---: | ---: | ---: | ---: | ---: | --- |
| A OFF | 0 | 52,746ms | 7 | 3 | 11,080 | 68,648 / 36,430 / 1,007 / 491 / 30,720 |
| B ON | 1 | 70,826ms | 22 | 11 | 34,180 | 309,411 / 79,903 / 3,272 / 1,468 / 224,768 |
| Delta ON-OFF | +1 | +18,080ms | +15 | +8 | +23,100 | +240,763 / +43,473 / +2,265 / +977 / +194,048 |

Interpretation: real external CodeGraph MCP tool-call adoption is proven, but
this bounded Java/Spring development A/B was worse with CodeGraph ON. The
decision is effectiveness deferred/no-keep for this measurement. This does not
support a token-saving, provider-token saving, product-efficacy,
navigation-benefit, PH-owned codegraph, codegraph replacement, OMO parity, Codex
support, auto-init product behavior, eval proof, generated app certification,
broad reliability, or closure guarantee claim. User owner-direction to pursue
default-on CodeGraph as developer convenience is a separate future product task
and is not effectiveness evidence.

## Post-rc6 Default Developer MCP Bundle Smoke

External local/current tarball package-runtime surface smoke PASS:

- source HEAD: `a9dcf044ff423fc4b94e549d365febe0844ab960`
  (`a9dcf04 feat(cli): add developer MCP bundle`);
- source type: fresh local/current tarball only, not registry `@next`;
- package/version: `persona-harness@0.4.0-rc.6`;
- tarball:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/developer-mcp-bundle-a9dcf04-20260701-125655/persona-harness-0.4.0-rc.6.tgz`;
- npm shasum: `24631c91d8ad4791ab7b8a3ca139312ddd8989eb`;
- sha256: `7adc96fdbd14bf9447f70ff8de7dc3fe0192c8d875516aaabbd454170d12936a`;
- package includes `packages/codegraph-mcp/bin/codegraph-mcp.mjs`,
  `packages/codegraph-mcp/lib/codegraph-core.mjs`, root bin
  `ph-codegraph-mcp`, and optional dependency metadata for
  `@colbymchenry/codegraph@1.1.6`;
- default init/bootstrap registers remote `grep_app`, remote `context7`, and
  local PH `codegraph` wrapper;
- no fake `git_bash` or `lsp` OpenCode MCP surfaces are registered;
- no `.codegraph` auto-init was observed;
- `--no-developer-mcp`, `--no-codegraph`, `--codegraph-preview`, and config
  preservation passed;
- missing-binary CodeGraph unavailable facade passed framed and newline MCP:
  protocol-alive, `tools/list` status-only, `tools/call status` and unknown
  tool returned `isError:true` unavailable payloads, no fake indexed/search
  tools, and clean stderr;
- `opencode mcp list --pure` showed `grep_app`, `context7`, and `codegraph`
  connected.

In this smoke, CodeGraph connected means the PH wrapper/facade stayed
protocol-alive. It does not mean usable indexing, effectiveness, navigation
benefit, or token savings.

This is local/current tarball package-runtime surface evidence only, not
registry `@next` behavior until a later publish verifies this gitHead. It is not
token-saving, provider-token saving, product-efficacy, navigation-benefit,
PH-owned CodeGraph, CodeGraph replacement, OMO parity/replacement, Codex
support, generated app certification, broad reliability, or closure guarantee
evidence.

## Publish Notes

rc6 has already been published under `next`.

Useful verification commands:

```sh
npm view persona-harness@0.4.0-rc.6 version gitHead dist.shasum --json
npm dist-tag ls persona-harness
```

Tag `v0.4.0-rc.6` points at
`30ded278ab5726e4f910d94b62d131647963807b`. Do not move `latest`.
