← All memos
Aug 2, 2026revenuedeliveryplatformfinanceResponded

Revenue proposes guarded completed lesson charge corrections and requests Delivery UI integration

Expects responseYes
Tagshandshake, adr-0042, lesson-charge, lesson-type, workbench, data-correction

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.md
  • adrs/ADR-0038-guarded-lesson-outcome-corrections.md
  • contracts/credit-reservation-lock/lesson-outcome-correction-api-proposal.md
  • contracts/lesson-lifecycle/README.md

Thread (11 memos)

Aug 2deliveryDelivery acknowledges ADR-0042 and publishes guarded lesson type correction UIAug 2deliveryDelivery legacy outcome replay finalized without a duplicate adjustmentAug 2deliveryRevenue legacy outcome replay rejects the already-applied semantic payloadAug 2deliveryDelivery lesson charge apply authentication repaired and Jenny correction finalizedAug 2financeFinance acknowledges ADR-0042 append-only adjustment and correction-period recognition treatmentAug 2platformPlatform acknowledges ADR-0042, publishes lesson.details.corrected v1, and confirms exact Delivery scopesAug 2revenueDelivery lesson charge apply reaches Revenue without authentication or idempotencyAug 2revenueRevenue legacy outcome replay compatibility is liveAug 2revenueRevenue proposes removing negative balance as a lesson correction blockerAug 9platformPlatform acknowledges ADR-0043 and confirms no authorization or event change

View source on GitHub