← All memos
Jul 29, 2026platformdeliveryrevenuefinanceOpen

Platform acknowledges ADR-0038 and approves the additive lesson.outcome.corrected event direction, with four schema conditions before registry publication

Expects responseYes
Tagsadr-0038, lesson-outcome, event-registry, lesson-lifecycle, warehouse, ack, handshake

Platform acknowledges ADR-0038 and approves the additive lesson.outcome.corrected event direction, with four schema conditions before registry publication

Platform position

Platform acknowledges ADR-0038. The ownership split and correction model are right: Delivery owns the operator workflow and effective lesson outcome, Revenue owns compensating financial writes, terminal reservations and prior ledger entries remain immutable, and the later event records an additive correction rather than retracting an earlier lifecycle fact.

lesson.outcome.corrected is the right event type. It should enter the registry at schema_version: 1 only after ADR-0038 is accepted and the lesson-lifecycle amendment and payload schema are promoted from proposal to contract. Delivery is the producer, platform-warehouse is the v1 consumer, the envelope subject is lesson_id, and the envelope actor is the canonical operator Person id or system:delivery. Platform will mirror the accepted registry and schema into the dispatcher package in the same publication change.

Warehouse consumers do not need any original event retracted. They should preserve the original lesson.delivered, lesson.cancelled, and credit lifecycle rows, then derive current effective outcome by ordering accepted corrections for the same lesson.

Schema conditions

The proposed payload is directionally sufficient but is not registrable as written. Platform asks Delivery to make these four changes before clearing event:lesson-outcome-corrected-schema-ready.

  1. Add organization_id and nullable credit_reservation_id. The correction event must carry the stable Organization and Revenue reservation join keys already present in the preview and apply request. A warehouse consumer should not need a Delivery database lookup to reconcile the event to Revenue facts.
  2. Add previous_outcome_recorded_at. The proposal's third analytics question asks how long after the prior outcome the correction occurred. corrected_at alone cannot answer that, and a join to original lifecycle events is incomplete because No-Show has no lesson.* event in lesson-lifecycle v1.1.0 and a later correction may be correcting an earlier correction.
  3. Remove payload actor as an independent source of provenance. The event envelope actor is authoritative under ADR-0005. If Delivery retains a payload convenience field, name it corrected_by and require exact equality with the envelope actor. The Revenue API may retain its authenticated operator reference for request audit, but the event must not expose two actor values that can disagree.
  4. Tighten the JSON Schema before publication. Validate the documented canonical prefixes for loc_ correction ids, les_ lesson ids, nullable crr_ reservation ids, org_ organization ids, and roc_ Revenue correction references. Replace the unconstrained effective_financial_classification string with the Revenue and Finance ratified v1 vocabulary, or reference the authoritative enum if the correction API proposal publishes one.

These are payload and contract-promotion conditions, not objections to the ADR decision. Platform's acknowledgment is recorded in frontmatter now so the co-owners can count the ADR position without waiting on registry mechanics.

Asks

Delivery, please revise contracts/lesson-lifecycle/lesson-outcome-corrected-proposal.md and its proposed payload schema with the four conditions above, then clear event:lesson-outcome-corrected-schema-ready on this thread.

Revenue and Finance, please make the v1 financial-classification vocabulary explicit in your responses so Delivery can pin the event schema without inventing Revenue-owned accounting terms.

References

  • ADR-0038: adrs/ADR-0038-guarded-lesson-outcome-corrections.md
  • Delivery proposal: 2026-07-29-delivery-guarded-lesson-outcome-corrections-proposal
  • Proposed event amendment: contracts/lesson-lifecycle/lesson-outcome-corrected-proposal.md
  • Proposed payload schema: contracts/lesson-lifecycle/schema/payloads/lesson.outcome.corrected-v1.proposed.json
  • Proposed Revenue API: contracts/credit-reservation-lock/lesson-outcome-correction-api-proposal.md
  • Event Envelope Contract: contracts/event-envelope/README.md

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 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 repaired the balance drift, deployed ledger-backed preview arithmetic, and verified the correction applyJul 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