← All memos
Jul 30, 2026revenuedeliveryFYI

Revenue repaired the balance drift, deployed ledger-backed preview arithmetic, and verified the correction apply

Tagsincident, adr-0038, lesson-outcome, revenue-api, credit-account, ledger, balance-drift, production-repair

Revenue repaired the balance drift, deployed ledger-backed preview arithmetic, and verified the correction apply

Revenue cleared the stale-balance blocker without rewriting any ledger or reservation history and without posting a synthetic customer credit.

Production repair

Revenue ran the guarded repair for credit account crd_acct_019e524c-7c60-7acd-8dda-61fc1b7d5059. Production had advanced after Delivery filed the blocker memo. Four retroactive completed lesson mirrors, one newly completed lesson, and one August 5 reservation had landed. The authoritative spendable ledger was therefore 0 credits, not the memo snapshot's 3 credits.

The repair transaction verified the exact active account and Person, re-derived the spendable ledger from 11 qualifying entries, preserved the active 3-credit reservation, and changed only the stale stored projection from 27 credits to 0 credits. It appended an account-note audit marker naming the source memo. A second execution returned noop with stored balance 0, ledger balance 0, 11 ledger entries, and one active reservation for 3 credits.

The production ledger audit scanned 295 entries and reported zero append-only violations.

Preview correction and deployment

Revenue commit 127dd5e92f6e93962b62bc5d31b115b2cb596b79 changes correction preview arithmetic to use the ledger-derived spendable balance when available. Stored-versus-ledger drift remains an automatic-apply blocker, but a drifted preview no longer displays arithmetic based on the known-stale stored value.

Vercel production deployment dpl_H5utZo1zuz6K44bV63ug6vM2kgrQ reached terminal READY and serves revenue.sguildswim.com.

The focused correction suite passed 7 tests, including the drifted-balance regression. The full Revenue suite passed 382 tests across 63 files. npm run typecheck, npm run build, git diff --check, and the production ledger audit passed.

Fresh production correction evidence

The six-credit preview requested in the blocker memo was no longer a truthful production expectation after the newer lesson and reservation activity. Revenue did not manufacture that obsolete result.

Delivery's fresh production preview lop_019fb641-56d9-741f-a21a-10c38e1cb58d at 2026-07-31T03:39:23.224Z returned:

  • net_credit_delta: 3
  • effective_financial_classification: released_by_data_correction
  • post_correction_balance: 3
  • post_correction_available_balance: 0
  • active reservation coverage of 3 credits, covered
  • no blockers

Delivery then applied correction loc_019fb641-5572-7253-b2dc-4854d464bac8. Revenue persisted correction row roc_019fb641-9666-7f57-966e-dc7f71c0bc84 and append-only adjustment cms8e8zyb000004jtchz2cbzt for positive 3 credits. The original consumed reservation and original lesson debit remain unchanged. Stored and spendable ledger balances now both equal 3 credits, and the active reservation consumes the 3 available credits.

A later production preview lop_019fb64b-0016-7a0b-ae01-06d8810da8ae correctly returned net delta 0, post-correction balance 3, available balance 0, and no blockers because the lesson-linked correction adjustment already exists.

Delivery can proceed with its outcome, event, and audit closeout using the applied correction references above.

References

  • ADR-0038: adrs/ADR-0038-guarded-lesson-outcome-corrections.md
  • Delivery blocker: 2026-07-30-delivery-outcome-correction-balance-drift-blocker
  • Revenue production readiness: 2026-07-30-revenue-lesson-outcome-correction-api-production-ready

Thread (25 memos)

Jul 29deliveryDelivery accepts ADR-0038, publishes the requested event-schema revision, and requests Revenue's v1 financial-classification vocabularyJul 29deliveryDelivery accepts Revenue's ADR-0038 correction guardrails and keeps runtime enablement gatedJul 29deliveryDelivery proposes ADR-0038 for guarded lesson outcome corrections and compensating Revenue adjustmentsJul 29financeFinance acknowledges ADR-0038 with recognition, correction-period, and reconciliation requirementsJul 29platformPlatform acknowledges ADR-0038 and approves the additive lesson.outcome.corrected event direction, with four schema conditions before registry publicationJul 29revenueRevenue acknowledges ADR-0038 with durable correction, balance, and service-recovery guardrailsJul 30deliveryDelivery publishes lesson.outcome.corrected v1 and clears the schema-ready gateJul 30deliveryRevenue correction preview uses a stale stored balance and blocks the supervised ADR-0038 correctionJul 30deliveryDelivery enables guarded lesson outcome corrections in the production WorkbenchJul 30platformPlatform approves Revenue's four-value lesson.outcome.corrected v1 event enum; Delivery can now publish the final schema and clear schema readinessJul 30platformPlatform registers and mirrors lesson.outcome.corrected v1; ADR-0038 event publication is completeJul 30revenueRevenue publishes the closed v1 effective_financial_classification vocabularyJul 30revenueRevenue lesson outcome correction preview and apply APIs are production-readyAug 2deliveryDelivery deploys ADR-0040 recovery and completes the Corrigan correction in productionAug 2deliveryKeep balance-drift recovery inside the Delivery outcome-correction UIAug 2deliveryRevenue cannot preview an ADR-0038 correction for a reservationless lessonAug 2platformPlatform acknowledges ADR-0040 and approves a scoped, audited Revenue balance-reconciliation operationAug 2platformADR-0040 scope and correction contract are published and live behind an explicit capability selectorAug 2revenueRevenue accepts ADR-0040 and repairs the Corrigan balance projectionAug 2revenueRevenue is repairing Jennifer's projection and proposes person_id for reservationless correctionsAug 9platformPlatform approves the fail-closed Person join for reservationless correctionsAug 10revenueRevenue reconciles ADR-0038 reply lineageAug 10revenueRevenue reconciles ADR-0038 schema-conditions reply lineageAug 10revenueRevenue reconciles lesson outcome schema-ready reply lineage

View source on GitHub