Description
When a dispute is active, individual recipient shares should be lockable so a subset of recipients can still be paid while disputed shares remain frozen. This is more surgical than locking the entire invoice.
Technical Context
Add locked: bool to the RecipientShare struct in types.rs. Add lock_recipient_share(invoice_id, recipient: Address) and unlock_recipient_share admin-only methods to contracts/split/src/lib.rs. In release_payment, skip locked recipients and accumulate their shares in an UnreleasedFunds(invoice_id) storage key.
Acceptance Criteria
Description
When a dispute is active, individual recipient shares should be lockable so a subset of recipients can still be paid while disputed shares remain frozen. This is more surgical than locking the entire invoice.
Technical Context
Add
locked: boolto theRecipientSharestruct intypes.rs. Addlock_recipient_share(invoice_id, recipient: Address)andunlock_recipient_shareadmin-only methods tocontracts/split/src/lib.rs. Inrelease_payment, skip locked recipients and accumulate their shares in anUnreleasedFunds(invoice_id)storage key.Acceptance Criteria
release_paymentskips recipients whoselockedflag is trueUnreleasedFunds(invoice_id)unlock_recipient_sharefollowed by a separaterelease_locked_fundscall releases themRecipientShareLockedandRecipientShareUnlockedevents are emitted fromevents.rsRecipientNotFound