# v0.4.0-rc.9 Release Notes

## Version

`v0.4.0-rc.9`

## Dist Tag

`next`

`0.4.0-rc.9` is published under `next` for the P1.5/P2/P3/P4 workflow rail
package delivery. `latest` did not move.

Registry verification:

- `persona-harness@next`: `0.4.0-rc.9`;
- gitHead: `fd597970877756f0523fb73ad1e093473e75a97a`;
- shasum: `7bd42b00d669275b0995d37ec108cbb28b8b66b8`;
- dist-tags: `next=0.4.0-rc.9`, `latest=0.3.9-alpha.8`,
  `alpha=0.3.9-alpha.8`;
- tag: `v0.4.0-rc.9` points at
  `fd597970877756f0523fb73ad1e093473e75a97a` after registry gitHead
  verification.

## Summary

This candidate packages three user-facing CLI workflow surfaces:

- `ph workflow tdd`, a read-only TDD red-to-green status helper;
- `service.state-ownership`, a precise Java/Spring service-architecture
  conformance blocker for Service-owned in-memory state/id counters;
- `ph evidence metrics [--json]`, a read-only local evidence metrics view.

## Included Behavior

### Read-Only TDD Status

`ph workflow tdd` reports the current ticket's TDD red-to-green state and next
action without writing red or green evidence.

Evidence-writing and blocking remain with `ph workflow test`,
`ph workflow check`, `ph workflow archive <ticket>`, and
`ph workflow finish implement`.

This is not a full TDD framework. It does not scaffold tests, prove test
sufficiency, run coverage, run mutation testing, or certify generated app
product quality.

### Service State Ownership Blocker

`service.state-ownership` blocks precise Java/Spring service-architecture
violations where a private `Service.java` field owns in-memory state or id
generation through:

- `Map`;
- `AtomicLong`;
- `nextId`;
- `idCounter`.

The blocker reports file:line evidence, uses
`architecture-service-state-ownership`, and routes through the existing
registry/closure/check/archive/finish path. Comments, string literals, and local
variables are not hard blockers.

Controller-to-Repository direct dependency remains the central authoritative
conformance blocker. Repository package placement and `bootJar` hard blockers
are deferred until their false-positive risk is lower.

This is a scoped conformance gate, not a broad AST/linter product or general
architecture-correctness guarantee.

### Evidence Metrics

`ph evidence metrics [--json]` aggregates local `.persona/evidence` records
when they exist:

- provider token evidence from `token-usage.1` session files;
- structured tool/MCP call names, including CodeGraph/LSP/context7/grep_app
  families when present in JSON/JSONL event evidence;
- structured read chars when present;
- `ph workflow finish implement` pass/fail command records.

The command is read-only and does not write a dashboard artifact.

This is a local evidence summary only. It is not a token-saving,
provider-token-saving, product-efficacy, navigation-benefit, generated-app
certification, broad reliability, or closure-guarantee claim.

## Package-Surface Evidence

Pre-release local/current evidence:

- `41d0d2d` covered README rc8 consistency and the read-only
  `ph workflow tdd` helper.
- `df6319f` added the P3 `service.state-ownership` blocker and P4
  `ph evidence metrics [--json]`.
- `4a0c06f` recorded P3/P4 external local/current tarball smoke.

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.9`;
- registry gitHead: `fd597970877756f0523fb73ad1e093473e75a97a`;
- registry shasum: `7bd42b00d669275b0995d37ec108cbb28b8b66b8`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rc9-registry-package-runtime-20260701-205115`;
- read-only `ph workflow tdd` package-runtime smoke passed disabled,
  red-missing, red-without-green, passed, invalid extra arg, help listing, and
  no extra TDD evidence writes;
- TDD rail regressions passed: strict-off wrote no fake evidence; valid red was
  PH-generated; invalid red was rejected; green-only/no-red blocked; forged
  evidence was ignored; red→green archive/finish passed;
- P3 `service.state-ownership` passed: violation produced check/WARN plus
  closure blocker/fix step and archive/finish block; safe nearby code did not
  block; Controller→Repository regression was still observed;
- P4 `ph evidence metrics [--json]` passed: schema `evidence-metrics.1`,
  token/tool/MCP/read-char/finish/unreadable aggregates, read-only no-write, and
  honest missing evidence handling.

## Boundaries

Do not claim:

- model/OpenCode/eval evidence;
- full TDD framework, scaffolding, coverage, mutation testing, or test
  sufficiency;
- broad AST/linter product or general architecture correctness;
- token saving, provider-token saving, product efficacy, or navigation benefit;
- generated-app product quality, generated-app certification, broad reliability,
  or closure guarantee;
- Codex/LSP support beyond separately implemented and verified surfaces.
