The insurability test
Five properties.
Or a refusal that names why.
This is the real check, running in your browser — the same predicate the API applies, imported from the same module. Knock a property out and watch the refusal name it. Nothing is sent anywhere; there is no key and no wallet involved.
Build a profile
Kind
Evidence lane
Grader
Knock a property out
The five-property test
Insurable- Two accountable parties satisfiedPayer and worker as attestation refs. A bare address is not a party.
- Acceptance sealed upfront satisfiedWhat 'done' means, decided before work starts and sealed as a digest — never after.
- At least one decodable lane satisfiedThe layer must be able to decode delivery. No lane, no cover — blind spots pay nobody.
- Deadline in epochs, with grace satisfiedClocks are epochs, not wall time. Past deadline plus grace, the default is revert.
- A refund path satisfiedWhere reverts pay. This is the escrow the gadget can revert, so funds cannot strand.
quote(profile) → bond floor · premium · lanes · capacity
The refusal is the useful half. It names every missing property at once rather than failing on the first, so a partner fixes the profile in one pass instead of five.
Refusals speak the same language as outcomes
UNINSURABLE_PROFILEThe profile fails one of the five properties; the refusal names which.
CAP_EXCEEDEDThe namespace's exposure would exceed its master bond.
UNFUNDEDNo grid credits to spend on the call.
REPLAY_REFUSEDA duplicate job hash; the refusal points at the original receipt.
NAMESPACE_SUSPENDEDThe namespace is under license review; reads still work.
Each refusal points at the object that caused it, so an integration never has to guess what the layer objected to.