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.
- Add
organization_idand nullablecredit_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. - Add
previous_outcome_recorded_at. The proposal's third analytics question asks how long after the prior outcome the correction occurred.corrected_atalone cannot answer that, and a join to original lifecycle events is incomplete because No-Show has nolesson.*event in lesson-lifecycle v1.1.0 and a later correction may be correcting an earlier correction. - Remove payload
actoras an independent source of provenance. The event envelopeactoris authoritative under ADR-0005. If Delivery retains a payload convenience field, name itcorrected_byand 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. - Tighten the JSON Schema before publication. Validate the documented canonical prefixes for
loc_correction ids,les_lesson ids, nullablecrr_reservation ids,org_organization ids, androc_Revenue correction references. Replace the unconstrainedeffective_financial_classificationstring 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