# Measured Claims

This is the **canonical claim boundary** for Persona Harness (PH). The README
and [CONTRIBUTING](../CONTRIBUTING.md) summarize and link here; they do not
restate it. If a claim is not on this page with evidence, PH does not make it.

Persona Harness only claims what measurement supports. When a measurement is
negative, PH records it and keeps the feature default-off or parked — it does
not quietly drop the result.

## Claim levels (summary)

A claim may only assert what its evidence supports. Climb in order:

1. Surface exists → 2. PH invokes it in a fixture → 3. PH generates the evidence
(not hand-written) → 4. Adversarial inputs fail honestly → 5. External smoke
reproduces from a fresh tarball/npm → 6. Repeated A/B improves a named scenario
→ 7. Only now may a scoped claim be written.

Full detail and the reject rule live in
[CONTRIBUTING → The Claim Ladder](../CONTRIBUTING.md#the-claim-ladder).

## Supported claims

Each supported claim is scoped to bounded local fixtures and is a
**completion-integrity** claim, not an app-quality claim. P3 held Stable/GA and
npm `latest` movement from the 2026-07-12 local production audit, which found
stronger completion-integrity bypasses outside these bounded fixtures. The
condition that hold named — trusted external signed CI/verifier attestation —
was demonstrated on 2026-08-09 and is recorded below.

### 1. PH blocks missing completion evidence

> PH can block completion when required reports, evidence, or test results are
> missing for explicitly defined workflow gates.

Boundary: this does not prove generated app quality or strong anti-forgery
integrity.

### 2. Forged TDD evidence is rejected

> PH ignores a simple hand-written/forged TDD evidence file in the measured
> completion-integrity fixture; `workflow finish` still exits non-zero.

Boundary: this does not prove full TDD sufficiency or rejection of every
internally consistent forged evidence chain. P3 is the accepted remediation
program for that gap.

### 3. Green-only completion is blocked when the TDD rail is enabled

> In the measured completion-integrity fixture, with the TDD rail on, PH blocks
> green-only completion that has no red-first evidence (measured 5/5 vs 5/5
> allowed with it off).

Boundary: PH does not write tests for you and does not prove test quality.

### 4. Compile errors are not accepted as red evidence

> PH does not treat a compile failure as valid red TDD evidence in the measured
> fixture.

Boundary: this is an evidence-integrity claim, not a testing-framework claim.

## Negative / parked

### P3 completion-integrity hold

A local production audit dated 2026-07-12 against
`persona-harness@0.7.0-rc.2` recorded bypasses and safety gaps that block
Stable/GA and npm `latest` movement until P3 closes. Local evidence paths:

- `/Users/yongtae/Downloads/persona-harness-production-audit.md`
- `/Users/yongtae/Downloads/persona-harness-audit-execution-log.txt`

Accepted boundary:

- Unsigned project-local JSON can remain diagnostics/audit material, but must
  not be finish authority after P3.
- Local fresh fixed-command verification is cooperative-project integrity only.
- Strong integrity/GA claims require trusted external signed CI/verifier
  attestation. **Demonstrated 2026-08-09** — see below.
- Current RC evidence is not generated-app certification, product efficacy,
  broad reliability, security certification, token-saving evidence, or a strong
  anti-forgery guarantee.

See [`current/p3-integrity-roadmap.md`](current/p3-integrity-roadmap.md).

#### Level 2 external attestation, demonstrated 2026-08-09

The boundary the hold names as a precondition for a strong integrity or GA claim
was exercised end to end, on `persona-harness@0.8.0-beta.34` installed from the
registry, against a separate public consumer repository producing its own
GitHub-signed attestations.

> An enrolled external repository signed a receipt over its own source in GitHub
> Actions; the consumer fetched it, consumed it once, and the replay was
> refused.

Refusals were exercised individually and each reported a distinct diagnostic:
wrong repository, wrong workflow, wrong ref, excluded pull-request path, three
malformed-archive shapes, expiry, source drift, replay, all-skipped tests, and a
severed network. A real signature from an unenrolled repository was refused on
identity rather than on cryptography.

Bounded plainly:

- **Level 2 is now evidenced. The remaining P3 items are not.** This records one
  boundary, not the hold's closure.
- The excluded **fork event** was not exercised — it needs a push from an
  account outside the project — and is reached only indirectly.
- One operator, one day, one project shape. Evidence and the lines that were
  **not** covered are on issue #116.

### Runtime injection

Measured in accepted 10-pair local-current OpenCode fixtures. Both PH ON and PH
OFF succeeded 10/10, but PH ON increased provider-token total, read chars, tool
calls, and elapsed time in **all 10 pairs**. See
[`current/injection-value-status.json`](current/injection-value-status.json).

- Allowed: runtime guidance exists as an explicit **default-off, opt-in
  preview**.
- Forbidden: that runtime injection improves generated code quality, saves
  tokens, or improves broad product efficacy.

## Preview / not proven

### Role Checklist Relay

- Allowed: PH includes a Role Checklist Relay preview for role artifacts and
  gate-oriented workflow guidance; role boundaries are report-only/heuristic.
- Forbidden: reliable automatic multi-agent orchestration, production-ready
  delegation, or deterministic role enforcement.

### Workflow loop (Ralph-loop-style continuation)

- Allowed: `ph workflow loop` is an explicit capped fresh-session blocker loop
  command with fixture-scoped evidence. It is **not** a default hook.
- Forbidden: autonomous completion, closure guarantee, broad reliability, or
  token saving.

### CodeGraph / LSP

- Allowed: CodeGraph and LSP wrappers are optional preview integrations that
  report an unavailable status when their external tools are missing.
- Forbidden: default effectiveness, broad navigation benefit, or being a
  required product path.

## Forbidden claims

| Claim | Status | Why |
| :--- | :--- | :--- |
| token saving | forbidden | runtime injection data is negative / not proven |
| generated app quality | forbidden | PH checks rail/evidence, not app quality |
| full TDD framework | forbidden | PH gates evidence, not test sufficiency |
| broad AST/linter enforcement | forbidden | checks are scoped/report/closure surfaces |
| production-ready multi-agent orchestration | forbidden | relay is a checklist preview |
| closure guarantee | forbidden | workflow loop has fixture-scoped evidence only |
| runtime injection benefit | forbidden | measured negative |

## How to add a new claim

1. Add the measurement first.
2. Link the evidence (archive, fixture, or status file).
3. State the scope (which fixture/model/conditions).
4. State the limitation.
5. If it is not supported, keep the claim out of the README.
