The payout release used an idempotency key built from the operator and the currency — the same string on every request that person would ever make. The claim step returns any existing payout matching that key before claiming anything, so the first release worked and every one after it found that row, saw “paid”, and reported success while moving no money. A failed release could never be retried for the same reason. Keys now name one ATTEMPT; the claim itself is what makes double-paying impossible, and it always was. A transfer that fails for a definite reason reverts and can be retried immediately, while one whose outcome is unknowable — a dropped connection that may mean the money did land — freezes instead, because money stuck is recoverable and money sent twice is not. Two unused helpers that would have transferred with no idempotency key, written no payout record and no ledger entry, and computed the protocol fee on a different base than the settlement engine, were removed.