Understand
Invariants
The safety, liveness, and evidence claims evaluated by the lab.
These are release-conformance invariants. A scenario may claim only applicable invariants backed by durable adapter, mint, and runner evidence; an HTTP status alone is insufficient. Current developer-preview coverage and release gaps are listed in the README.
Safety
- At-most-once redemption start per delivery binding (
at-most-once-redemption-start). Duplicate transport messages do not start another mint swap. - At-most-one merchant credit per request (
at-most-one-merchant-credit-per-request). For single-use requests, all deliveries combined produce zero or one credit. - At-most-one merchant credit per delivery (
at-most-one-merchant-credit-per-delivery). Retries, delayed responses, transport failover, and process restarts cannot duplicate ledger effects. - Proof-set exclusivity (
proof-set-exclusivity). One active proof set cannot be bound to two delivery IDs. - Delivery identity immutability (
delivery-identity-immutability). A delivery ID never changes request ID, payload hash, proof-set hash, mint, unit, or amount. - Exact net amount (
exact-net-amount). The credited amount equals the request after NUT-02 input fees, neither under nor over. - No premature settlement (
no-premature-settlement).settledrequires replacement proofs in the receiver wallet, not only a successful mint response. - No false rejection after possible consumption (
no-false-rejection-after-possible-consumption). Ambiguous spent/pending inputs without recovered outputs remainprocessing/recovery_blocked. - Monotonic receipts (
monotonic-receipts). Status versions start at one, increment by one for material changes, and never regress after a terminal state. - Stable duplicate response (
stable-duplicate-response). An identical duplicate returns the stored receipt and causes no new side effect.
Liveness
- Eventual terminal or explicit recovery state (
eventual-terminal-or-recovery-state). Under a healthy mint and eventual message delivery, an accepted payment becomes settled or a pre-consumption validation rejection. - Crash recovery (
crash-recovery). A process restart at every persisted state resumes without duplicate credit or loss of recoverable outputs. - Retry convergence (
retry-convergence). Bounded sender retries and status polling converge on the receiver's durable receipt. - Transport convergence (
transport-convergence). HTTP and Nostr observations of one delivery converge on the same receipt identity and highest status version.
Evidence
- Independent mint evidence (
independent-mint-evidence). Proof state is observed through NUT-07 and, where applicable, NUT-09/NUT-19 recovery evidence. - Independent ledger evidence (
independent-ledger-evidence). Credit count and amount come from the receiver's durable ledger view. - Reproducibility (
reproducibility). Every result records scenario ID, seed, adapter versions, upstream protocol lock, ordered timeline, and invariant evidence. - No unsupported pass (
no-unsupported-pass). Missing optional capabilities areskipped/N/A, never counted as a pass.
The runner's pass condition is the conjunction of every applicable invariant. One violated safety invariant fails the scenario immediately and preserves all available artifacts.
Scenario artifacts contain one result for every identifier above. passed requires observed or reproducibly derived evidence; failed records a violation; not_applicable means the scenario did not exercise the behavior; and not_observable means the behavior applied but the required evidence was unavailable. Confidence is recorded separately as observed, derived, or adapter_claimed. Adapter-claimed evidence never qualifies a release.