Integration Contract
Every integration should answer four questions before it displays a QUAD-family value, route, proof, or balance.
QUADPublic Accountability
Every integration should answer four questions before it displays a QUAD-family value, route, proof, or balance.
Use public contracts and status routes first. Dynamic feeds should degrade cleanly when stale or unavailable.
Prefer explicit labels over clever inference. A small honest schema is better than a rich one that lies by omission.
surface, owner, status, freshness, source_url, boundary.
receipt_id, event, surface, proof_class, payload_boundary, verifier_url.
denom, amount, balance_class, module_flag, finality, owner_surface.
source_chain, host_chain, destination_chain, route_state, refund_state, destination_handoff.
Receipt lookup is a proof path, not a permission slip to broaden the claim.
Core, Infra, Bridge, Liquid, or main-domain orientation.
Use the exact receipt id, transaction hash, or proof route.
Storage, passage, handoff, finality, refusal, quarantine, or settlement request.
What the receipt excludes: payload truth, custody, redemption, admission, settlement, or reward eligibility.
If any field is missing or stale, show the weaker state.
Use the right word for the right surface. This is where many integrations accidentally overclaim.
These are easy mistakes. Avoiding them is part of integrating honestly.
Viewing public pages must not require Keplr, a wallet connection, a signature, a seed phrase, or payment.
Fixture, smoke, rehearsal, test, stale, or pre-SDK data must stay labelled as weaker than live state.
Running a node, joining community channels, using a faucet, testing routes, or reading receipts does not create entitlement.
If a public contract says closed, stale, refused, quarantined, or not yet public, your UI should not make it look available.