# V2 API response-schema fixtures

`route-response-fixtures.json` is the checked-in, machine-readable V2 consumer
compatibility baseline. It enumerates every route in
`baseline/extracted/v2_api_routes.txt` exactly once.

- `fixtureStatus: "exact"` is emitted only for a route-specific recorded
  response. Its schema makes every observed field required and allows unknown
  properties so future response fields are additive and optional to existing
  consumers.
- `fixtureStatus: "unresolved"` means no route-specific capture exists. It has
  no response schema by design; route names, x402 metadata, and adjacent
  endpoints are not sufficient evidence to invent one.
- `unmatchedEvidence` records live captures retained in the baseline whose
  captured paths do not appear in the inventory. They must not be silently
  applied to a similar-looking route.

Regenerate after recording a new route-specific response with:

```sh
python3 pr7/compat/build-v2-fixtures.py
```

CI uses `--check` to ensure the fixture output is reproducible. The Vitest
compatibility suite verifies coverage and confirms captured fields cannot be
removed or repurposed while optional additions remain allowed.

## Pinned-source method evidence

`route-source-method-evidence.json` separately freezes the HTTP methods
exported by the canonical V2 route handlers for the 50 inventory paths that
were absent from `baseline/x402-route-registry.json`. It is bound to:

- V2 commit `a80144d1acbbbbf24b9eca7cd91e61daad0c0ad6`;
- the exact handler path under `repos/theloopbreaker-site/app/api/**`; and
- the SHA-256 of each handler file.

It contributes 55 method-specific registry rows (46 `GET`, 8 `POST`, and one
`DELETE`) without treating them as x402 advertisements. CORS-only `OPTIONS`
exports are not registry operations. A handler export does not prove a request
schema, response schema, response status, response headers, payment policy,
finality, privacy, or idempotency policy. Those fields remain unresolved unless
independent route-specific evidence exists.

Regenerate or verify the source binding only with a checkout of that exact V2
snapshot:

```sh
python3 pr7/compat/build-v2-source-method-evidence.py \
  --v2-root /path/to/pinned/v2-checkout
python3 pr7/compat/build-v2-source-method-evidence.py \
  --check --v2-root /path/to/pinned/v2-checkout
```

The no-argument `--check` used in CI verifies the checked-in inventory,
registry, snapshot-commit, path coverage, method vocabulary, and hash format.
It intentionally does not substitute an arbitrary checkout for the pinned
source.
