{"criteria_id":"settlement-evidence/v1","criteria_family":"settlement-evidence/v1","version":"1.0.0","corpus":{"id":"ledger-completeness-corpus/v1","sha256":"d5d922924f9045634f7614fa35a4b2d477f7d0c2d0f23af20fcba116a0d2ad2d"},"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":10000,"label":"$0.01","basis":"per sample"},"free_tier":{"per_day":100,"min_interval_ms":5000,"on_exhaustion":"402"},"input":{"body":"One JSON request body: { sample: { lines: [ <ledger-line object>, ... ] }, caller? (free pre-check only) }.","sample":"Required object carrying lines. A request body over 262,144 bytes is a free pre-gate refusal naming the cap; a sample over 1,000 lines is likewise a free refusal naming the cap.","lines":"Required array of ledger-line objects. An empty array is assessable and graded (zero lines, every count zero).","malformed_lines":"A line that is not a plain JSON object is NOT graded: the whole sample is a named free refusal (line_not_object, with the 0-based line_index of the first malformed line), before any payment."},"fields":[{"id":"payer","keys":["payer","payer_wallet"]},{"id":"amount","keys":["amount","price_usdc_units","amount_usdc_units","amount_units"]},{"id":"tx","keys":["tx","payment_tx","payment_tx_id","tx_id","signature"]},{"id":"chain_fee","keys":["chain_fee","solana_fee_lamports","fee_lamports","fee"]},{"id":"facilitator_credit","keys":["facilitator_credit","facilitator_credits","facilitator_credit_units"]},{"id":"house_flag","keys":["house","house_flag"]},{"id":"fx_status","keys":["fx_status","fx","cad_status"]}],"grades":["present","absent","pending"],"rules":{"present":"An accepted key exists with a real recorded value: any number (including 0), any boolean (including false — a recorded house:false IS a present house-flag), a non-empty string other than the pending marker, or an object/array value.","pending":"An accepted key exists but carries no value yet: null, an empty or whitespace-only string, or the string pending (any case).","absent":"No accepted key exists in the line at all.","fx_composite":"fx_status is graded first from its own keys. When none is present, the fleet cad_* block decides, in order: cad_pending true -> pending; cad_pending false -> present; cad_pending null -> pending; otherwise any of cad_rate_usdcad / cad_fmv / cad_rate_date present with a non-null value -> present; otherwise absent.","extra_keys":"Unknown extra keys in a line are ignored: not graded, not counted, and never making a line more complete.","key_order":"A field is looked up under its accepted keys in the published order; the first key present in the line decides."},"honesty_boundary":"The census grades FIELD PRESENCE only: a field graded present means a value is recorded under one of the field's published keys — it never asserts that the value is true, correct, settled, or owed. Factors are printed (per-field counts); there is no composite score, grade, or percentage.","boundary":"Boundary: this census grades field presence over a submitted artefact. It does not verify any settlement against the chain (that is B1, settlement-verify), does not verify a receipt (B2), and does not reconcile record sets (Q-25 subset-S reconciliation). The family settlement-evidence/v1 is shared; the checks are different and are never sold as each other.","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","submitted line count","summary present count","summary absent count","summary pending count","house flag"],"ledger_note":"The ledger list above is closed: adding a field is a criteria/handling version change. No submitted line content, no fragment of it, and no hash of any submitted value is ever ledgered.","retention":"Submitted samples are graded 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, the submitted line count, and the summary counts). Because nothing is kept, a paid retry re-sends the sample."},"payment_includes":"$0.01 per ledger sample. The payment includes: one ledger-line completeness census over the one payments-ledger sample you submit — every line graded on seven fields (payer / amount / tx / chain fee / facilitator-credit / house-flag / FX-status), each graded present, absent, or pending, per line and in summary counts — and an as-of timestamp. The census grades FIELD PRESENCE only: it never asserts that a present field is true. Nothing about the submitted sample is stored beyond the payments ledger's closed field list.","kill_line":"Kill line (M-22, 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 grade from undisclosed stale or partial data (stop-serving under the affected criteria version, per the corpus re-pinning discipline in the criteria).","service":"ledger-check","endpoints":{"criteria":"GET /criteria (free)","precheck":"POST /precheck (free, input-shape validation + assessability only; no census, no grades)","check":"POST /check (paid, $0.01 per sample: signed ledger-line completeness census — per-line grades on seven fields, summary counts, as-of timestamp)","metrics":"GET /metrics"}}