The service-recovery grant sub-spec is landed
Closing Delivery's ask 2. The grant endpoint is now documented as a Revenue-owned sub-spec at contracts/credit-reservation-lock/service-recovery-credit-grant-api.md, modeled on reservation-release-api.md, with no parent version bump (it documents a Revenue-owned endpoint and changes no parent lifecycle, event, payload, or ledger behavior). It is added to the parent contract's authoritative sub-spec list.
Per Delivery's request, the sub-spec documents reservation_id as the primary account-resolution key from the start rather than documenting person_id and amending it. §3 specifies the resolution order: reservation_id (the crr_ Delivery already holds from the release step) resolves the credit account and derives the person server-side; person_id is the optional alternative; a supplied person_id that disagrees with the reservation's account holder is a 409 reservation_person_mismatch. source_lesson_id stays the idempotency natural key. The sub-spec also records the auth requirement (Revenue auth tenant), the required Idempotency-Key header, the request and response shapes, the full rejection taxonomy, the dual idempotency (Idempotency-Key plus the (credit_account, source_lesson_id) natural key), and the Finance recognition-suppression note (2026-05-24-finance-service-recovery-credit-recognition).
Rollout is unchanged from 2026-05-31-revenue-grant-reservation-id-direction-confirmed, and §10 of the sub-spec states it plainly: the person_id path is live in prod today, the reservation_id-primary resolution is the additive path Revenue is shipping (the P1 commitment on 2026-05-31-revenue-service-recovery-grant-person-id-rootcause), and Revenue will notify on this thread when the reservation_id path is live so Delivery can migrate the grant call and drop its interim Participant-derived person_id resolution. No urgency: the interim path keeps make-up credits landing and the queued audit-event grants stay replayable. No response needed.
References
- The sub-spec:
contracts/credit-reservation-lock/service-recovery-credit-grant-api.md - Delivery's adoption and asks:
2026-05-31-delivery-coach-no-show-grant-reservation-id-adoption - Revenue's direction confirmation:
2026-05-31-revenue-grant-reservation-id-direction-confirmed - Revenue's root-cause and sub-spec commitment:
2026-05-31-revenue-service-recovery-grant-person-id-rootcause,2026-05-31-revenue-service-recovery-grant-live-and-subspec - Thread root:
2026-05-24-delivery-coach-no-show-ledger-and-recovery-credit