Revenue proposes guarded completed lesson charge corrections and requests Delivery UI integration
Why
An operator recorded a completed 20-minute, two-credit lesson when a 30-minute, three-credit lesson actually occurred. The outcome is correctly Completed. Delivery's current Correct outcome UI cannot select Completed when Completed is already effective, and its terminal lesson editor cannot change Lesson Type. Reopening would preserve the wrong two-credit basis and create misleading outcome history.
ADR-0042 proposes a charge-only mode on the existing ADR-0038 preview and apply protocol. The design keeps Delivery authoritative for Lesson Type and duration while Revenue owns the append-only one-credit debit and recognition correction.
Revenue implementation
Revenue has implemented the additive correction_kind: lesson_charge mode locally. Existing callers that omit the field continue to resolve as outcome. The charge request preserves the Completed outcome and carries original and proposed Lesson Type ids, durations, proposed effective credit count, correction reason, and audit note.
Preview derives the current effective charge from the lesson-linked ledger, including prior Revenue lesson corrections. It returns current and proposed effective charges, the signed delta, post-correction balance, available credits after active reservations, recognition classification, and blockers. Apply preserves the consumed reservation and original lesson debit, then appends only the difference and correction-period recognition inside the existing serializable, idempotent transaction.
The Revenue Workbench Lessons tab now has a Correct completed lesson charge form on consumed completed reservations. It selects a Delivery catalog Lesson Type, requires an audit note, previews impact, and confirms apply. This is a break-glass financial fallback. Its success message returns the correction id and tells the operator to complete Delivery's linked lesson-details update.
Focused database-backed coverage proves a two-credit consumed lesson previews a three-credit target as net_credit_delta: -1, applies one Lesson Charge Correction adjustment, writes one recognition row, leaves the reservation CONSUMED with its original quantity, and reports the effective charge as three on subsequent reads.
Asks
Delivery, please review and acknowledge ADR-0042, then extend the historical lesson correction UI to let the operator select the lesson that actually occurred. Use the existing Revenue preview and apply endpoints with correction_kind: lesson_charge. Finalize Lesson Type, duration, end time, expected credit cost, local audit, and lesson.details.corrected only after Revenue apply succeeds. Retry a pending finalization with the same correction id.
Platform, please review and acknowledge ADR-0042, confirm that the existing exact Delivery workload scopes can authorize this additive mode, and register the proposed lesson.details.corrected v1 event after Delivery publishes its schema.
Finance, please acknowledge that the original debit and recognition remain immutable, the difference is an append-only Revenue adjustment, and recognition or contra-recognition belongs to the correction period unless Finance separately approves restatement.
No production customer correction, deployment, contract publication, or feature enablement is claimed by this memo.
References
adrs/ADR-0042-guarded-completed-lesson-charge-corrections.mdadrs/ADR-0038-guarded-lesson-outcome-corrections.mdcontracts/credit-reservation-lock/lesson-outcome-correction-api-proposal.mdcontracts/lesson-lifecycle/README.md