# v0.4.1-rc.2 Release Notes

## Version

`v0.4.1-rc.2`

## Dist Tag

`next`

This is the verified next-channel release record for the corrected `0.4.x`
line.

Post-publish registry state:

- `persona-harness@next`: `0.4.1-rc.2`;
- `persona-harness@latest`: `0.4.0`;
- `persona-harness@alpha`: `0.3.9-alpha.8`;
- registry gitHead: `bcb5f08cc7c0c99ac07ca3e93d04b3b35b7a1f70`;
- registry shasum: `ab59b9d7e7689cdff6f997ae956edd2c3d3ab6b1`;
- local and remote `v0.4.1-rc.2` tag:
  `bcb5f08cc7c0c99ac07ca3e93d04b3b35b7a1f70`.

Registry `next` briefly moved to a superseded `0.5.0-rc.1` build earlier in
the 0.4.1 cycle. That package remains a wrong-channel incident, not accepted
release evidence.

## Summary

`0.4.1-rc.2` packages the accepted local/current A/B evidence surfaces after
`0.4.1-rc.1`:

- read-only `ph evidence pminus-report [--json]`;
- explicit-write `ph evidence ab-run --scenario <id> --condition <id> --
  <command>`;
- downstream compatibility where generated `persona-ab-measurement.1` records
  feed `ph evidence ab-report [--json]` and
  `ph evidence pminus-report [--json]`.

## P-minus Evidence Report

`ph evidence pminus-report [--json]` reads structured
`persona-ab-measurement.1` evidence and emits `evidence-pminus-report.1`.

It classifies local A/B scenarios as `improved`, `no-improvement`, `worse`, or
`inconclusive`, and emits decision-support hints such as `keep`,
`keep-opt-in`, `downgrade`, `remove-candidate`, and `no-claim`.

The command is read-only. It writes no report artifact, mutates no harness
config, changes no workflow/closure state, and does not automatically delete,
downgrade, or remove any surface.

## A/B Evidence Runner

`ph evidence ab-run` runs one local command fixture for one scenario/condition
and writes scoped evidence under `.persona/evidence/ab/<scenario>/`.

Example:

```sh
npx ph evidence ab-run --scenario codegraph-navigation --condition off -- npm test
```

The generated `persona-ab-measurement.1` record includes the child command,
`exitStatus`, `finishStatus`, elapsed time, stdout/stderr character counts,
optional provider-token/read/tool/MCP telemetry, and explicit null/unavailable
fields when telemetry is absent.

Child command failures are recordable evidence. If the evidence write succeeds,
the recorder can exit 0 while preserving the child command failure inside the
record.

The runner writes only the explicit A/B evidence file. It does not mutate
`.persona/harness.jsonc`, workflow finish state, closure state, adopted
instructions, or generated report artifacts.

## Accepted Registry Evidence

The package-runtime surfaces were accepted before release prep and then verified
from the registry package:

- `pminus-report` smoke commit:
  `29b532eea707ab843917a4835d8793a44c2cb82f`;
- `ab-run` smoke commit:
  `b02317cd3d276b4fe547dab57e51fbbdcef968fd`;
- Docs record for A/B runner smoke:
  `f5eed3d491486e40594a98a4f82276ed10811204`;
- A/B runner external archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/ab-evidence-runner-b02317c-20260702T020151Z`;
- A/B runner accepted local tarball shasum:
  `88d9bbc1841f9201c0020598dda9962af770f7c0`.

Registry smoke:

- source: registry `persona-harness@next` only;
- installed version: `0.4.1-rc.2`;
- archive:
  `/Users/yongtae/Desktop/persona-harness-artifacts/archive/2026-06-24-desktop-persona-runs/rc041-rc2-registry-package-runtime-20260702T022527Z`;
- package entries included `dist/cli/evidence-pminus-report.js`,
  `dist/cli/evidence-ab-run.js`, `dist/cli/evidence-ab-run-options.js`, and
  `dist/cli/evidence-ab-report.js`;
- basic CLI help/version/init/doctor/bootstrap exited 0;
- `ph evidence ab-run --help` exited 0, and invalid missing separator exited 1;
- passing and failing child `ab-run` commands both recorded evidence, and the
  recorder exited 0 when the evidence write succeeded;
- `ph evidence ab-report --json` and `ph evidence pminus-report --json` exited
  0 and consumed generated evidence;
- published `ab-run` generated P-minus scenarios covering `improved/keep`,
  `no-improvement/keep-opt-in`, `worse/downgrade`,
  `worse/remove-candidate`, missing provider telemetry, and single-condition
  `inconclusive/no-claim`;
- the failing child command recorded child exit 7 with no provider telemetry;
- the runner scenario classified as `worse/downgrade` with provider telemetry
  `partial`;
- report commands wrote no artifacts, `ab-run` wrote only expected
  `.persona/evidence/ab/<scenario>/` files, and there was no
  `.persona/harness.jsonc`, `.persona/workflow`, or
  `.persona/instructions/adopted.json` mutation.

## Publish And Tag Sequence

Trusted Publisher published `0.4.1-rc.2` under `next`. The
`v0.4.1-rc.2` tag was created and pushed only after registry gitHead/shasum
verification, and the tag-triggered GitHub Release workflow succeeded,
including GitHub release creation.

Do not move `latest`; stable remains `0.4.0`.

## Claim Audit

Do not claim:

- token saving or provider-token saving;
- product efficacy or navigation benefit;
- app/product quality guarantee;
- full TDD framework, scaffolding, coverage, mutation testing, or test
  sufficiency;
- CodeGraph/LSP default behavior or effectiveness;
- broad AST/linter product or general architecture correctness;
- broad reliability, closure guarantee, or generated-app certification;
- Codex support or code-nav replacement;
- automatic downgrade/removal.

Allowed wording:

- local A/B evidence recorder;
- read-only P-minus decision-support report;
- missing telemetry remains unavailable;
- generated A/B evidence is consumable by existing local reports.
