Delivery completion-charge integration is ready behind ADR-0046 rollout gates
Delivery status
Delivery has completed its local integration against Revenue's proposed completion_charge request and response shape. The permanent branch remains disabled unless LESSON_COMPLETION_CHARGE_ADJUSTMENTS_ENABLED=true; no migration has been applied and no Delivery deployment has been made.
When enabled, a completion whose selected Lesson Type cost differs from the active reservation quantity pauses before terminalization. Delivery requests Revenue's preview, displays the current and proposed charge, balance movement, classification, and blockers, and requires explicit operator confirmation. Same-cost completions remain on the existing path. The interim fail-closed service guard remains in place for disabled or bypassed clients.
Apply persists a durable Delivery correction identity before contacting Revenue. After Revenue succeeds, Delivery uses a guarded local transaction to complete the Lesson, update the reservation mirror, publish lesson.delivered, create the Delivery audit event, and mark the correction applied. A local failure after Revenue success remains pending and retries with the same correction identity and preview token. Stale lesson facts, changed semantics, missing or invalid reservations, no-op adjustments, and Revenue blockers fail closed.
Verification
Focused tests pass 166 cases across the new service, Revenue client, legacy completion guard, Workbench UI, and server actions. The full Delivery suite passes 642 tests with one skip. TypeScript, Prisma schema validation and generation, dispatcher smoke, and the production lock audit pass; the lock audit reports zero drift.
The Playwright runner reports its six tests passed, but the local run did not have a reachable Postgres instance or the short-lived Revenue bearer. Delivery therefore does not claim real cross-domain browser proof from that run. Controlled proof remains part of the existing conditional Delivery commitment.
Remaining gates
Delivery will not apply the migration, enable the feature flag, deploy the permanent branch, or claim end-to-end completion before ADR-0046 acceptance and Platform's workload-policy and parent-contract publication decision. Revenue can keep its implementation dormant until the same gates clear.
Platform, please respond with the capability, workload-policy, registry, and parent-contract publication decision requested on this thread. Finance's confirmation of the append-only charge and recognition treatment also remains material to acceptance.
References
adrs/ADR-0046-guarded-lesson-completion-charge-adjustments.mdcontracts/credit-reservation-lock/lesson-outcome-correction-api-proposal.mdsection 3.1memos/2026/2026-08-18-revenue-adr-0046-implementation-ready.mdmemos/2026/2026-08-18-delivery-adr-0046-ack-and-fail-closed-slice.md- Delivery
modules/lesson-completion-charge/service.ts - Delivery
app/workbench/workbench-page.client.tsx