01must proveConfirmed | Payout correction replaces the editable fields using the saved version, clears omitted optional values and rejects a stale version. | validation | api, service | test |
02must proveConfirmed | Correction applies the original duplicate and bank compatibility checks, refusing an occupied live reference or a bank from another unit. | validation | service, database | test |
03must proveConfirmed | An amount correction updates the open reconciliation’s linked amount, payout total, difference and version in the same transaction, and records that change. | calculation | service, database | test |
04must proveConfirmed | The service refuses correction, verification, void and evidence attachment after finalization; the database protects financial fields while allowing a note-only change. | invariant | service, database | observed |
05must proveConfirmed | A payout’s currency and entry origin remain fixed after creation. | invariant | database | test |
06must proveConfirmed | Void requires a reason and request key and fails while an open or finalized reconciliation holds the payout; an already voided payout has no further lifecycle actions. | lifecycle | api, service | test |
07must proveConfirmed | A void preserves the payout and its recorded reason for review in the list. | lifecycle | service | test |
08must proveConfirmed | Evidence is limited to fifty distinct files per payout and cannot be added after void or reconciliation. | validation | service, database | test |
09must proveConfirmed | State controls the offered actions: an unheld payout allows all lifecycle commands, an open-held payout excludes void, and a finalized or voided payout allows none. | policy | service | test |
10must proveConfirmed | Payout deletion is prohibited except during complete workspace purge. | invariant | database | test |
11must proveConfirmed | Update governs correction and evidence, delete governs void, and audit history records the correction’s changed fields and the void. | permission | api | test |