Skip to main content

Acceptance test catalogue

APPROVED · IMPLEMENTATION SPECIFICATION · London 0.1.0

Execution contract​

Every case below must have automated coverage where deterministic, or a retained observation/sign-off artifact where it concerns real participants. Record environment, commit/image/profile hashes, input fixtures, observed result, proof level and evidence link. All statuses start NOT RUN in an implementation tracker; this document defines acceptance, not execution results.

IDScenario / stimulusRequired observable result
A01Parse every API and artifact exampleExact schemas pass; unknown keys, duplicate JSON keys and malformed quantities fail
A02Two independent canonicalisers process golden fixturesIdentical bytes/digests; NFC/domain changes rejected or change digest as specified
A03Sign grant/receipt/manifest/peer-resultRight domain/key verifies; cross-domain, wrong node and altered fields fail
A04Missing production profile, fixture provider or unapproved economicsProduction startup refuses monetary/participant operations with named missing fields
A05Checkout return without verified provider eventNo paid/active claim from browser redirect
A06Duplicate and out-of-order provider eventsOne entitlement/payment transition; ended period not revived by stale event
A07Authenticated user queries another user's statement/session404/403, no data disclosure; audit records denied access
A08Provider clearance delayed after active subscriptionPlayback may continue under verified access; allocation remains unfunded
A09Work has invalid rights/hash/intervalsActivation rejected; prior catalogue remains intact
A10First page load and catalogue navigationNo autoplay; explicit Play works; browsing does not restart playback
A11Second session, seek bursts, repeated session creationOne active session; listener-wide ten-second credit not reset; 429 when exceeded
A12Expired/replayed/cross-node grant and Range requestNo new serving; 410/409/403/416 as appropriate; zero duplicate credit
A13Artist node A fills independent B, then B serves listenerBoth ownership records, peer result, content digest and actual playback receipt linked
A14Peer sends corrupted chunkReceiver rejects/quarantines before serving; source suspended/incident visible
A15Source peer unavailableOne retry then origin fill, with source/fallback recorded; no fill reward
A16Node fails after partial chunkBounded retry/fallback; partial earns zero; complete retry earns duration once
A17Two complete retry receipts in reverse arrival orderLowest consume sequence wins; reward not determined by node clock or arrival order
A18Node restarts before receipt acknowledgementSpool replays identical receipt; no extra serving, duration or money
A19Spool full, stale heartbeat, suspended keyNode excluded and new serving stopped; existing evidence retained
A20Session below/at threshold and init segmentBelow earns zero; at threshold all unique media chunks count; init earns zero
A21Midnight/rights/entitlement boundary and late receiptSession closes at boundary; deterministic day; late retained but absent from original allocation
A22Worked 101-unit example and arbitrary permutationsExactly specified totals; input ordering cannot change result
A23Random budgets, recipients, weights and rounding tiesNo loss/creation/overflow; total allocations bounded by funded budget
A24No listening, unresolved hold or no fundingReserve remains explicit; no fabricated allocation or payment
A25Operator is also rights holder; Porto fallback servesSeparate roles, correct unique duration, retained origin share and no cache-fill reward
A26Resolve old hold/funding in later runOriginal listener-day allocated exactly once; referenced evidence preserved
A27Append commitment twice; same ID different hashExact retry no-op; changed hash rejected; only one original record/event
A28Wrong signer, pause, rotation, malformed reference/correction branchContract rejects invalid mutation; old records byte-identical
A29Artist verifies own statement; tamper file/index/parentValid package passes; each alteration fails the corresponding verdict
A30Delete retained input; publish correctionMissing evidence is explicit failure; correction linked; old commitment still accessible
A31Execute reviewed run, then replay command/jobExactly one successful transfer per obligation; correct asset/recipient/amount
A32Crash after signing or submit timeoutDurable signed bytes recovered; same hash retried; no new transfer while uncertain
A33Confirmed abort, expiry, wrong asset, frozen recipientNo false paid state; retry only after conclusive prior-attempt reconciliation
A34Restore database predating a submitted paymentExternal journal/chain recover attempt before signing resumes; no double payout
A35Browser matrix and real-time three-hour setExplicit play, pauses, seek, midnight continuation and fallback behave; rebuffer measured
A36100-session synthetic load and four concurrent fills/nodeNo unbounded backlog or phantom money; capacity metrics recorded
A37Full authorised audit recomputationEligibility, splits, funding conservation and payment journal reproduce exactly
A38Approved Mainnet rehearsalReal native-USDC recipient receipt and commitment readback with no unexplained difference
A39Paid participant pilotReal cleared payments, listener return/renewal observations, artist and independent-party serving
A40Participant economics and exitActual cost/reward/subsidy/time separated; willingness to continue and successful revocation recorded
A41Same checkpoint and ordered commands in two clean enginesIdentical accepted/rejected outcomes, journal head and logical-state digest; no clock/network/random dependency
A42Crash before/during/after synchronous ledger commitJournal, state, unique keys, result and outbox all appear together or not at all; recovery queries command ID
A43Duplicate command, changed body, stale revision and competing reservationExact retry returns original result; conflict/stale reject; funds cannot be double-reserved
A44Rebuild indexes and replay after compaction/checkpoint restoreSame logical state/digest regardless of physical file layout; no historical external effect executes
A45Disk-full, WAL/sync disabled, corrupt backup or unsupported bindingFail closed and alert; no acknowledged nondurable financial mutation or unsafe configuration
A46Promote replacement while former owner may still runPromotion refused until fenced; one active owner and signing boundary demonstrated
A47Export/import logical checkpoint with private auxiliary records presentMatching logical digest and history references; private auxiliary data excluded from chain-portable export
A48Restore before a confirmed payout observationExternal payment journal/chain reconciliation restores status before dispatch; no duplicate payment

Required monetary fault injection​

For A31-A34 inject failure before DB commit, after reservation, after signature, after durable journal, after broadcast, after chain success before local acknowledgement, during approval cancellation and during backup restoration. Assert one paid obligation at most and a visible unresolved state wherever success cannot yet be established. The system must prefer a delayed payment over an unsupported second transfer.

Human pilot evidence​

A13/A39/A40 require real participant-owned hosts; Porto fixtures do not satisfy them. A38 requires specifically authorised real funds; testnet is insufficient. Paid renewal cannot be measured before renewal is offered. Record “not yet observed” rather than infer retention from initial sign-up. Product success thresholds must be pre-registered in the pilot plan; technical launch gates remain mandatory regardless of business outcome.

Contents · Implementation plan · Launch inputs