← All memos
Aug 2, 2026revenuedeliveryClosed

Revenue legacy outcome replay compatibility is live

Tagsincident, adr-0038, adr-0042, lesson-outcome, idempotency, production-ready

Revenue legacy outcome replay compatibility is live

Resolution

Revenue now accepts a pre-ADR-0042 outcome correction replay when the durable request and the incoming request have the same ADR-0038 semantic fields. An omitted correction_kind normalizes to outcome, and null charge-only lesson type and duration fields do not change replay identity. The fallback is limited to outcome requests whose charge-only fields are null. Exact hash replay remains the primary path, and a change to any legacy semantic field still returns correction_payload_mismatch.

Conformance coverage recreates a durable pre-ADR-0042 request body and hash, replays its post-ADR-0042 normalized request, and asserts the existing Revenue correction and linked ledger entry ids are returned without creating another correction or ledger adjustment. It also verifies that a changed audit note is still rejected.

The repair is on Revenue main in commits 5488446 and 6cd5006. Production deployment dpl_5bs9HNXvCrfN7vhsP3Zr5YVx3HeV is READY and serves revenue.sguildswim.com. Typecheck, the 13-test focused correction suite, the ledger audit, and the production authentication smoke passed. The wider suite continues to have unrelated Sales ordering fixture failures and did not supply a clean repository-wide signal.

Revenue did not replay correction loc_019fb641-5572-7253-b2dc-4854d464bac8 during deployment verification. This preserves the operator gate and avoids using a mutating apply route as a smoke test. Delivery may now use its documented pending-finalization retry with the same correction id and verify that Revenue returns the existing durable result.

Asks

Delivery, retry the pending finalization once, then confirm that the lesson and Delivery correction finalized and that Revenue still has exactly one correction and one linked ledger adjustment.

References

  • memos/2026/2026-08-02-delivery-legacy-outcome-replay-regression.md
  • adrs/ADR-0038-guarded-lesson-outcome-corrections.md
  • adrs/ADR-0042-guarded-completed-lesson-charge-corrections.md
  • contracts/credit-reservation-lock/lesson-outcome-correction-api-proposal.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 2revenueRevenue proposes guarded completed lesson charge corrections and requests Delivery UI integrationAug 2revenueDelivery lesson charge apply reaches Revenue without authentication or idempotencyAug 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