Category: Testing | Priority: High | Dependencies: none | Out of scope: Mainnet coverage, keeper scheduler wiring
Description & Context: The on-chain flow was verified manually (deploy v4, streams, bump_many, atomic revert) but no committed script exists — judges can't reproduce it and nothing guards contract regressions between versions.
Acceptance Criteria / DoD:
How to verify: cd backend && npm run e2e against Testnet — passes end-to-end twice in a row; kill RPC mid-run and confirm a named failure, not a hang.
Category: Testing | Priority: High | Dependencies: none | Out of scope: Mainnet coverage, keeper scheduler wiring
Description & Context: The on-chain flow was verified manually (deploy v4, streams,
bump_many, atomic revert) but no committed script exists — judges can't reproduce it and nothing guards contract regressions between versions.Acceptance Criteria / DoD:
scripts/e2e-testnet.mjs(Node +@stellar/stellar-sdk): friendbot-funded ephemeral accounts,stellar contract deployofstream_core.wasmversion() == 4; two streams created (ids 0,1); TTL probe shows instance re-armed to max afterbump_many([0,1]);bump_many([0,99])reverts withError(Contract, #2)and stream 0 is untouched; partial withdraw; cancel with sender-refund + receiver-payout summing tototal_amountnpm run e2escript added tobackend/package.jsonHow to verify:
cd backend && npm run e2eagainst Testnet — passes end-to-end twice in a row; kill RPC mid-run and confirm a named failure, not a hang.