# v0.8.0-beta.16 Release Notes

## Source Preparation Boundary

This document records the immutable `0.8.0-beta.16` Consumer Authority Beta
source-preparation candidate. It makes no npm package, Git tag, dist-tag
movement, GitHub release, original signed consumer artifact, promotion,
Stable/GA, or Finish authority claim.

`0.8.0-beta.15` is immutable staging-only evidence. Its final observer combined
mutually exclusive GitHub CLI identity selectors, so the command stopped before
online cryptographic verification. It is not reusable for beta.16 authority,
consumption, replay, or crypto evidence.

## Included Binding Contract

The packaged
[`consumer-authority-beta16-acceptance.json`](consumer-authority-beta16-acceptance.json)
record defines the source and fresh installed package contract. It preserves
the enrolled caller workflow as
`.github/workflows/research-attestation.yml` on `refs/heads/main` and binds
the signer separately to the Persona reusable workflow certificate SAN. The
caller identity is never substituted for the reusable signer identity.

The same record owns one versioned external `gh attestation verify` command
plan. It renders exactly one `--repo` selector from the caller enrollment and
one `--signer-workflow` plus `--signer-digest` from the reusable producer. The
caller workflow, ref, source SHA, run, and enrollment remain separate bindings;
they are never smuggled into a signer selector. Before a fixture is authorized,
the packaged no-token preflight invokes the installed `gh` CLI with an invalid
local bundle sentinel and returns only a bounded parser/exit classification. It
does not read an artifact, make a network request, use a credential, or retain
raw stdout/stderr.

The observer invokes
`preflight-consumer-authority-external-attestation.mjs --json` only before the
natural fixture exists. It is grammar evidence, not online crypto, fetch,
Finish, replay, release, or authority evidence.

The source projection excludes only bootstrap-local
`.persona/.ph-init-manifest.json` and workflow runtime state. The init manifest
contains a per-consumer canonical real path and is product ownership metadata,
not caller project source. The project profile, Gradle descriptors, Git source
identity, reports, and evidence remain bound. A mismatched caller, reusable
SHA/SAN, repository, source, run, digest, archive, stale record, or replay
remains blocked without retaining authority.

Before a future fixture, the package must still prove this public Java/Spring
consumer readiness route:

```text
ph bootstrap backend --strict --no-developer-mcp
ph bearshell ./gradlew test
ph bearshell ./gradlew compileJava
ph bearshell ./gradlew clean
ph evidence read README.md
ph evidence read .persona/project-profile.jsonc
ph evidence read src/main/java/<package>/<role>.java
<substantive implementation report> | ph plan --report-filled implementation --stdin
<substantive review report> | ph plan --report-filled review --stdin
ph workflow finish implement
```

An uninitialized `ph workflow finish implement` is a nonzero
`workflow-state-uninitialized` block. After the public bootstrap route, the
default Finish must be blocked only by `trusted-authority-required`; it must
not retain lifecycle readiness blockers. Source-built and fresh packed-installed
deterministic models prove a verified fetch remains unconsumed until one
explicit Finish consumes it, followed by an immediate replay block. The model
is not a signed artifact, online crypto result, or authority claim.

The package proof invokes plain `npm` only from its already bound detached
checkout; `npm --prefix ... pack` is forbidden. Its prepack runner derives the
package root from its own script location rather than a nested npm command.
One authoritative-bundle command requires an explicit canonical candidate
branch ref, accepts a `HEAD` alias only when it names that same candidate SHA,
materializes fresh target and base checkouts, rejects a stale launcher before
pack, verifies resolved manifest and lock paths, and runs the built source CLI
plus fresh installed consumer package exercise against the exact target tarball
SHA-256. The package exercise uses the same
consumer-contract executable but deliberately omits only the real Java/Gradle
fixture when the packaging host does not provision Java and Gradle. The full
source-built and fresh-installed Java/Spring/Gradle contract remains a separate
required run on a provisioned Java/Gradle host; the package exercise does not
claim that real Gradle verification occurred.

## Required Live Evidence

After protected integration, a separately authorized lifecycle may create the
matching `v0.8.0-beta.16` tag and publish once to `staging`. Before one natural
current-version fixture push, an independent observer must prepare an isolated
exact registry installation, enrollment/status/explain, observer credential
preflight, the no-token attestation command-plan preflight, and the
authority-only public readiness route.

Only after the natural fixture produces a current-version original artifact may
the observer verify original bytes online inside the certificate window, run
real installed authority fetch, consume Finish once, and verify immediate
replay rejection. The pre-fixture gate downloads no artifact and grants no
authority.
