# Paragraph cuts r02 — scoped independent recheck

**PASS: PGC-01 and PGC-02 are closed for r02.** September 13, 2026.
Only these two technical findings were rechecked; this is not broader package,
source/visual, or native Resolve approval.

## Immutable input bindings

- `paragraph-cuts-guide-r02.zip`: **845,807 bytes, 28 members**;
  SHA-256 `9bb628663f2d443954ce81293c0a9901e6806f56ceb8370966d1e33006052acd`.
- Supplied r02 actual replay proof: SHA-256
  `226fd35c049e10db6347d45ca679268b624c44b816b6c493b92af8ef25e091da`.
- Public `R02-VERIFICATION.json`: SHA-256
  `d14990a47ca9a84cfa1d2c7b82adc92d562846f17f7e75744cd29d714e76faaf`.

All bindings matched. The 28 public-tree files match the actual ZIP. Relative
to r01, four existing files changed: `README.md`, `run.mjs`, `verify.py`, and
`SHA256SUMS`. Four files were added: the preparation contract, its Node tests,
the Python plate-gate tests, and the r02 proof. The other **20 files** are
byte-identical. The selected core ZIP, recipe, font/license, six SVGs, source
clock and Resolve cut table remain unchanged.

## Frozen failure replays

| Original reproducer, against the actual r02 CLI | Exit | Result |
| --- | ---: | --- |
| Empty index | 1 | Rejected; zero PNGs and no success receipt |
| One-state index | 1 | Rejected; zero PNGs and no success receipt |
| Five-state index | 1 | Rejected; zero PNGs and no success receipt |
| Incorrect [99,100) dwell metadata | 1 | Rejected; zero PNGs and no success receipt |
| Frozen no-cuts movies, omitted plates | 2 | Required-argument rejection; no pass receipt |
| Same frozen movies, with canonical plates | 1 | Cut verification rejects; no pass receipt |

**PGC-01:** the recipe-derived contract now rejects all four frozen malformed
indexes. Exec traces show only the normal Chrome `--version` probe for each;
none launches a rendering browser. Code inspection confirms all listed SVG
sizes/hashes are checked before the browser session and reported counts derive
from completed records. Locations: `paragraph-cuts/preparation-contract.mjs:3`,
`paragraph-cuts/run.mjs:105`, `paragraph-cuts/run.mjs:154`.

**PGC-02:** `--plates` is required, the callable verifier rejects absent plates,
and missing check results no longer default to passing. Locations:
`paragraph-cuts/verify.py:98`, `paragraph-cuts/verify.py:143`,
`paragraph-cuts/verify.py:150`.

## Positive controls and limits

- The actual retained recipe/index validates as **six states, two variants**;
  the new CLI's environment check passes against the existing read-only project.
- The new verifier passes the existing r02 movies and six PNGs: **66 frames**,
  cuts **7/16** in each movie, and **66/66 decoded RGB frames** equal to r01.
  Both movie files and all six prepared PNGs remain byte-identical to r01.
- **28 tests pass:** 6 existing + 12 added Node tests; 8 existing + 2 added Python
  tests. TypeScript diagnostics: **0**.
- No new encoding or browser preparation session was performed. Positive
  preparation evidence combines direct contract validation and hash checks of
  the already-generated r02 plates; it is not a claimed fresh browser replay.
- Original r01 artifacts, the frozen review/reproducers, and r02 inputs remain
  unchanged. No dependencies were installed/copied, no symlinks were added,
  no shared repository files were edited, and nothing was published.

Exact argv, exit codes, exec traces, before/after hashes and the scoped result
are retained privately. `SHA256SUMS` binds this report and `verdict.json`.
Native Resolve remains **unverified**; no source or visual review was performed.
