The badge certifies three measured things about a stall's payment
surface: its live 402 exactly matches its published manifest on every
route; it has delivery evidence within 7 days; and its payTo/price
show no unannounced drift across Verdict Index catalog snapshots.
Full criteria: badge/CRITERIA.md in the
x402-loop-kits
repo. The battery (badge/run_battery.py) is public and
re-runnable.
| Service | 402 exact-match (battery) | Delivery evidence ≤7d | Drift on record | Badge |
|---|---|---|---|---|
| Token Verdict | PASS — 3/3 routes | Settled stamp, 2026-10-26 | None (2 snapshots) | AWARDED |
| RouteVerdict | PASS — 1/1 routes | Settled stamp, 2026-10-26 | None (2 snapshots) | AWARDED |
| ListSmith | PASS — 2/2 routes | Settled stamp, 2026-10-26 | None (2 snapshots) | AWARDED |
| LockSmith | PASS — 1/1 routes | Full battery 2026-10-25/26 (seed settlements, labelled as seeds; dogfood audits 8/8) | None — not yet catalog-indexed; drift watch starts at its first catalog appearance | AWARDED |
| StallRow | PASS — 16/16 routes (battery re-run 2026-10-27) | Settled stamps on original routes; Fleet Pass / Webhook Watch delivered live 2026-10-26; Fleet Pass seeded + settled on CDP & PayAI 2026-10-27; /v1/orchestrate delivered live 2026-10-27 (paid dogfood seed — all four legs OK; seed labelled as seed); /v1/index/changes delivered live 2026-10-27 (paid dogfood seed — a real catalog diff; seed labelled as seed) | None (2 in-service snapshots) | AWARDED — 2026-10-27, on the second re-check (see below). The last block was ours, and it was a bug, not a carve-out: the index ticker refreshed only on its 6h window, so the second catalog snapshot was never taken inside any deployment's lifetime and the route stayed undeliverable. Fixed in stall-row 13eeaf8 (bootstrap refresh while under two snapshots); a paid seed call then settled and delivered the diff (Base tx 0xe45a933c…a58). |
Re-check — 2026-10-27: battery re-run
against all five services (23 routes probed; every live 402
exact-matched its manifest — badge/battery-2026-10-27.json).
Four stalls unchanged (AWARDED). StallRow's orchestrate block cleared
(see its row); its index block stood at that run, so StallRow remained
NOT AWARDED.
Re-check — 2026-10-27 (index fix):
StallRow's index block is cleared. Root cause (from
the service's own Railway logs): the catalog pull ran exactly once,
at the 2026-10-26 22:50 EDT deploy; the refresh gate (newest snapshot
younger than the 6h window) never opened inside any later
deployment's lifetime, so no second snapshot was ever taken — no
error, no crash, the pull simply never fired again. The fix
(stall-row 13eeaf8) refreshes on a 900s bootstrap
interval while fewer than two snapshots are held, so any redeploy
sequence reaches a sellable pair in about one tick. On the fix's
deploy the ticker stored snapshot #2 (2026-10-27 05:38:08Z), and a
paid dogfood seed call settled ($0.10, Base tx
0xe45a933c2d23928e34438bbb904c376c1804e28159cfd03f76a19b402b921a58)
and delivered a real diff: 77,945 → 80,462 resources, 80 field
changes, 2,766 added, 249 removed (baseline 2026-10-27T02:54:13Z).
Seed labelled as seed: it proves delivery, not demand.
StallRow is AWARDED — the fleet is 5/5.
Record-depth honesty: Verdict Index snapshot history starts 2026-10-26. "No drift on record" today means 2 snapshots; the 30-day drift window matures 2026-11-25 and this page will print the depth on every future run.
None. No external stall is badged, listed, or named here without its operator's participation. If you run a stall and want the battery run against it, open an issue on the repo — the run is the same one published above, and the result is published either way.