# v0.8.0-beta.2 Release Notes

## Source Preparation Boundary

This document records the immutable `0.8.0-beta.2` Consumer Authority Beta source-preparation candidate. At candidate creation it does not assert an npm package,
Git tag, dist-tag movement, GitHub release, staged provenance artifact,
consumer-project signed artifact, promotion, Stable/GA state, `latest` change,
or Finish authority.

`0.8.0-beta.1` remains immutable staging-only evidence. Its exact registry
installation and staged-package provenance boundary cannot be reused as
current-version consumer authority evidence because the consumer verifier binds
the original signed receipt to the installed Persona Harness version.

## Included Source Controls

- The package version is strict prerelease SemVer `0.8.0-beta.2`.
- The manual publish policy permits this prerelease only on `staging` with
  `staging-only`; `latest` is invalid and a later `next` move needs separate
  `next-promotion-approved` approval.
- `ph bootstrap backend --strict` initializes only absent empty lifecycle loop
  states. It leaves malformed or stale state fail-closed. After the existing
  project-root transaction is established, fresh `.persona` initialization is
  assembled outside the caller workspace and promoted only while its target is
  still absent. The same transaction writes root init targets such as
  `.gitignore` and `.opencode/opencode.json`, then reserves canonical
  project-contained `.persona` and `.persona/workflow` paths with no-follow semantics
  before modifying config, profile, policy, plan, role, report, or
  loop-state artifacts. The captured project reservation remains the only
  bootstrap-time filesystem capability through the later `AGENTS.md` staged
  promotion and its cleanup; no post-capture bootstrap path reopens the
  caller-supplied project root. Project-root, parent, leaf, temporary, or
  detected replacement blocks with no bootstrap write outside the project.
- A fresh project can submit exactly one bounded substantive implementation or
  review report through `ph plan --report-filled <kind> --stdin`. It refuses
  empty, malformed, oversized, control-character, or replacement input. The
  report command applies a streaming 65536-byte ceiling before decoding or
  collecting stdin, including continuously producing pipes.
- Real `ph bearshell ./gradlew test` and `ph bearshell ./gradlew clean` create
  diagnostic execution evidence before an explicit same-invocation cooperative
  Finish. The cleanup keeps a prior ordinary build from making the fixed
  cooperative build task non-fresh. Default Finish and later closure remain
  external-blocked.
- The project-finish verifier rejects an otherwise valid original artifact when
  its signed receipt `phVersion` differs from the installed package version.

## Required Live Evidence

After protected integration, the separately authorized lifecycle must create
the exact `v0.8.0-beta.2` tag and publish this package once to `staging`, then
retain sanitized registry readback and exact-artifact provenance evidence. A
fresh registry-installed cooperative fixture must use the public lifecycle
commands above. A separate public fixture must pin the current package
revision, create one natural original signed consumer-project artifact, enroll,
fetch original bytes, inspect non-consumingly, consume explicitly exactly once,
and prove replay rejection. Forged, copied, wrong-identity, drifted, replayed,
expired, zero/all-skipped, malformed, unsafe, and offline inputs remain
nonzero without an authority artifact or Finish PASS.

## Mutation Boundary

This source candidate does not publish, tag, release, move a dist-tag, dispatch
workflows, use registry credentials, or grant Finish/closure authority.
