Description
Contributions received within the grace period but after the nominal deadline should incur an additional penalty fee on top of the standard platform fee. The penalty discourages gaming the grace window as a routine payment extension.
Technical Context
Add late_penalty_bps: u32 to the Invoice struct in types.rs. In contribute inside contracts/split/src/lib.rs, after checking the grace window, compute effective_fee = platform_fee_bps + late_penalty_bps when the contribution is late. Transfer the extra penalty to the treasury address. Emit LatePaymentPenaltyCharged(invoice_id, payer, penalty_amount) from events.rs.
Acceptance Criteria
Description
Contributions received within the grace period but after the nominal deadline should incur an additional penalty fee on top of the standard platform fee. The penalty discourages gaming the grace window as a routine payment extension.
Technical Context
Add
late_penalty_bps: u32to theInvoicestruct intypes.rs. Incontributeinsidecontracts/split/src/lib.rs, after checking the grace window, computeeffective_fee = platform_fee_bps + late_penalty_bpswhen the contribution is late. Transfer the extra penalty to the treasury address. EmitLatePaymentPenaltyCharged(invoice_id, payer, penalty_amount)fromevents.rs.Acceptance Criteria
platform_fee + late_penaltylate_penalty_bps = 0makes grace-window contributions identical to on-timeLatePaymentPenaltyChargedevent is emitted for every penalised contribution