# x402-board — PROOF

**What it is.** A public "what an agent can buy" board for the x402 lane.
Static page, built from a committed snapshot of the lane's own public
`/catalog` + `/stats` (the lane serves no cross-origin headers, so a browser
cannot fetch it live — the snapshot is the honest source and the page labels
its own `asOf`). Every number is re-derived at build time; nothing is typed.

**Pipeline (all from `prototypes/x402-board/`):**

```
$ python3 snapshot.py
sanity OK (live): 42 paid paths, payTo pinned, totalHits=43099, stats asOf 2026-11-06T09:07:27.438Z
wrote /Users/roverbot/projects/hermesbuilds/prototypes/x402-board/data/snapshot.json (174979 bytes)

$ python3 render.py
rendered index.html (26585 bytes): 42 endpoints, total 43,099, demand 13,871, asOf 2026-11-06

$ python3 check_board.py
rendered tmpfjru07ob.html (26585 bytes): 42 endpoints, total 43,099, demand 13,871, asOf 2026-11-06
guard OK: index.html matches the committed snapshot (B1-B7)

$ python3 check_board.py --self-test
rendered tmpxisa8e6c.html (26585 bytes): 42 endpoints, total 43,099, demand 13,871, asOf 2026-11-06
rendered tmpvz58sg8h.html (26585 bytes): 42 endpoints, total 43,099, demand 13,871, asOf 2026-11-06
rendered tmp1tlcceu3.html (26298 bytes): 41 endpoints, total 43,099, demand 13,871, asOf 2026-11-06
x402-board self-test (positive + 3 poisoned negatives)
  PASS P1 committed html passes all bars 
  PASS P2 committed html == fresh render (B7, no hand edit) 
  PASS N1 poisoned payTo REJECTED (B2 trips) bars=['B2 payTo not present verbati']
  PASS N2 hand-edited price REJECTED (B7 trips) bars=['B7 html not byte-identical t']
  PASS N3 dropped endpoint REJECTED (B3 trips) bars=['B3 1 paid endpoints absent f']
SELF-TEST ALL PASS
```

**The guard bars (each can fail):**

- B1 — `index.html` present and non-trivial
- B2 — pinned `payTo` / facilitator / network present verbatim (a wrong
  payTo — the money goes there — trips here)
- B3 — every paid path from the snapshot present in the page, count exact
  (a dropped endpoint trips here)
- B4 — headline figures (hits / demand / callers / endpoint count) re-derived
  from the snapshot match the page
- B5 — sampled endpoint prices present verbatim (a hand-typed price trips here)
- B6 — the snapshot's `asOf` is labeled on the page (a page that pretends it
  is live trips here)
- B7 — the committed `index.html` is byte-identical to a fresh render (any
  hand edit to the built page trips here)

**Poisoned controls (self-test, each MUST trip):**

- N1 wrong payTo → B2
- N2 hand-edited price `0.030` → `9.999` → B7
- N3 dropped endpoint → B3

All three rejected on their designated bars; the positive pair (P1/P2) passes.

**Deployment (verified 2026-10-12; re-snapshot + live re-verified
2026-10-23; re-snapshot + live re-verified 2026-11-06):** live at
`https://hermesbuilds.roverbot.workers.dev/prototypes/x402-board/` —
`curl -sL` answers 200 containing the pinned payTo verbatim (grep -c=2)
and the labeled asOf 2026-11-06 (grep -c=4), sha256 byte-identical to the
post-build dist (2026-11-06 firing: 34862e8388595cec97d096c1b47391178b05e
6b45f497104b97f940662ec1329). The 2026-10-23 pasted output above was
replaced by this firing's real output (same in-place fix pattern as the
2026-10-28 settle-counter and 2026-10-29 board-unify PROOF.md cards, which
the deadlink-hunter audit had flagged stale at 2026-10-23T08:02:27Z and
2026-11-06T09:04:19Z respectively). The push+deploy that was
pending consent on 2026-10-09 was completed by a later fleet firing; the
ledger's shipped line (2026-10-12) records the live-curl verification.

**What it does NOT claim.** It shows no revenue of its own (the "$0.00"
funnel cell is deliberate). Its number is upstream: the lane's measured
demand (258 real calls in 30d at capture) and any settlements on the
endpoints it points at. The "0 of 34,840 Bazaar sellers" line is the
backlog's pre-#28 demand-scan finding, stated as a dated past-tense fact.
