{"criteria_id":"payer-preflight/v1","criteria_family":"payer-preflight/v1","version":"1.0.0","corpus":{"id":"payload-preflight-corpus/v1","sha256":"930fa9a1e83dcd9eafd0c0fe1c7ace167803454289360fe55d11f6aec98b7148"},"corpus_pin_definition":"The corpus pin is the SHA-256 of the corpus's canonical serialization (the corpus object excluding its sha256 field), computed and verifiable by the published harness (harness.mjs).","price":{"usdc_units_per_call":20000,"label":"$0.02","basis":"per payload"},"free_tier":{"per_day":100,"min_interval_ms":5000,"on_exhaustion":"402"},"never_signs":"HARD FENCE: this service NEVER signs anything and never asks for a signature. It lints unsigned artefacts only. Verdicts are per-check factors; there is no composite score, grade, or pass/fail roll-up.","ops":{"evm":"POST /evm — artefact { network, chain_id, asset { address, decimals, name?, version? }, extra { name, version } | null, verifying_contract, human_amount, submitted_atomic, challenge_amount_atomic }","svm":"POST /svm — artefact { fee_payer, instructions [ { program, discriminator?, accounts? } ] (max 16), compute { limit, price? } | null, facilitator, serialized_size_bytes? }"},"evm_checks":["domain both-ways (JS way vs Python-fallback way; both separator hashes printed; AGREE / DIVERGENT)","extra_vs_token (MATCH / MISMATCH / NOT-CHECKABLE)","caip2 (MATCH / MALFORMED / CHAIN_MISMATCH)","conversion (exact integer arithmetic at the stated decimals; MATCH / MISMATCH / NOT-REPRESENTABLE)","amount_vs_challenge (exact equality only; MATCH / MISMATCH)"],"svm_checks":["instruction_count + payment_instruction_index","order (ORDER-OK / ORDER-FLAG with issues)","discriminator (12 TRANSFER_CHECKED; 13 APPROVECHECKED_FLAGGED — an approval, NOT a payment; 3 PLAIN_TRANSFER_FLAGGED; other / MISSING)","memo (PRESENT-CORRECT / MISSING / WRONG-PROGRAM against the SPL Memo program)","fee_payer (CLEAR / IN-AN-INSTRUCTION)","compute (WITHIN-POLICY / EXCEEDS-POLICY / NO-PUBLISHED-CAP / LIMIT-ABSENT against policy_table)","size (WITHIN / EXCEEDS vs 1232 bytes / NOT-PROVIDED)"],"policy_table":[{"facilitator":"payai-fleet","compute_limit_cap":100000,"cap_rule":"a compute limit >= the cap is rejected by the deployed fleet","canonical":{"limit":20000,"price":1},"provenance":"OURS — dated probe record 2026-10-12 (~100 structural /verify probes; FRICTION-MAP friction 12; lane-1 F-08): PayAI's deployed fleet rejects compute limits >= ~100k (boundary 50k-100k, fleet heterogeneous at high limits); canonical defaults limit 20,000 / price 1 proven by the same record"},{"facilitator":"stock-validator","compute_limit_cap":null,"cap_rule":"no value cap — the stock validator accepts any compute limit value","canonical":null,"provenance":"OURS + public source — same 2026-10-12 probe record: the stock @x402/svm validator has NO value cap on the compute limit (FRICTION-MAP friction 12)"},{"facilitator":"cdp","compute_limit_cap":null,"cap_rule":"no numeric compute-limit cap published in the records held on disk — the absence is reported, not filled in","canonical":null,"provenance":"public facilitator docs as held on disk (402-frictions lane records, 2026-11-03); no cap figure appears in those records"},{"facilitator":"public-recipe-cryptorefills","compute_limit_cap":null,"cap_rule":"a public recipe, not a facilitator cap: the recipe builds with compute limit 200,000 / price 1,000 — reported as a recipe reference, never graded as a cap","canonical":{"limit":200000,"price":1000},"provenance":"public recipe — Cryptorefills x402 skill (GitHub, crawled 2026-11-03; lane-1 F-08)"}],"malformed":"A malformed artefact is never graded: a named free refusal (the refusal code names the rule), before any payment, at the pre-check and at both paid ops alike.","honesty_boundary":"HARD FENCE: this service NEVER signs anything and never asks for a signature. It lints unsigned artefacts only. Verdicts are per-check factors; there is no composite score, grade, or pass/fail roll-up. A factor states what the submitted artefact's own fields compute to under the published rules — the domain hashes are recomputed from the submitted fields, the conversion is exact integer arithmetic at the stated decimals, and the compute grade is read against the published policy table whose provenance is printed per row. Where a record publishes no cap, the report says so; nothing is filled in.","boundary":"Boundary: this service lints a payer's own unsigned artefact. It does not probe a seller endpoint (the payability family), does not verify a settlement on-chain (the settlement-evidence family), and does not translate failures after the fact (the C2 failure-translation op of this family). It signs nothing, holds no payer keys, and moves no funds.","custody":{"ledger_closed_fields":["payer wallet","timestamp","day","price (USDC units) with the CAD fair-market-value block (rate, rate date, basis, cad_pending, refund — null unless refunded)","payment tx id","Solana fee (lamports)","criteria version","op","verdict line","per-check status summary","house flag"],"ledger_note":"The ledger list above is closed: adding a field is a criteria/handling version change. No submitted artefact content, no fragment of it, and no hash of any submitted value is ever ledgered.","retention":"Submitted artefacts are linted once at call time and are never stored — not in KV, not in logs, not in the payments ledger, not in metrics. The payments ledger records only the closed field list published in the criteria (payer, time, price, the service's own payment tx, op, verdict line, per-check status summary, house flag). Because nothing is kept, a paid retry re-sends the artefact."},"payment_includes":"$0.02 per payload. The payment includes: one pre-flight lint of the one unsigned payload you submit — for the EVM op, the EIP-712 domain separator recomputed both published ways with both hashes printed, the CAIP-2 network-form check, the human-price to atomic-unit conversion with the asset's decimals stated, and the exact-match verification of the amount against the challenge; for the SVM op, the structural lint of the unsigned transaction (instruction count and order, the TransferChecked discriminator check, memo program identity, fee-payer placement, and the compute limit/price graded against the published per-facilitator policy table printed in the criteria) — and an as-of timestamp. This service never signs anything and never asks for a signature; it lints unsigned artefacts only. Nothing about the submitted artefact is stored beyond the payments ledger's closed field list.","kill_line":"Kill line (M-27, under the operator's 2026-11-03 zero-demand doctrine): build, bank, and hold; judged at the fleet's periodic reviews. There is NO demand kill line for this item. Tripwires, all stop-and-review: refunds >5% of paid calls in any 30-day window; free use >10x paid use; a wrong factor from undisclosed stale or partial data (stop-serving under the affected criteria version, per the corpus re-pinning discipline in the criteria).","service":"payload-preflight","endpoints":{"criteria":"GET /criteria (free)","precheck":"POST /precheck (free, input-shape validation + assessability only; no lint, no factors)","evm":"POST /evm (paid, $0.02 per payload: signed EVM pre-flight report)","svm":"POST /svm (paid, $0.02 per payload: signed SVM pre-flight report)","metrics":"GET /metrics"}}