Skip to content

ADR-026: Promo Credits Are Location-Borne — No Payout on Promo-Origin Redemptions

Status

Accepted (2026-07-22, Aaron). Spec: docs/features/promo-credits-location-borne/spec.md. Precondition before deploy: partner communication to the affected location(s).

Note 2026-07-23: briefly superseded by a same-day pay-at-redemption ruling (Paul), withdrawn hours later after further consideration. Reaffirmed and extended by ADR-028 (no free hourly booking ever moves money). Implementation: PR #917.

Context

The 50-free-credits promo granted 4,575 credits with no cash behind them. Unlike the free-first-practice promo (comp bookings, $0, no money movement — the location donates the hour), promo credits behave like real money at redemption: the platform pays the hosting location ~90c/credit in actual cash. This drained $1,372 from the platform pool during the solvency incident (see docs/features/platform-cash-reconciliation/), and ~$1,145 of realistic future exposure remains ($2,797 face) with no funding source: the $6,500 remediation was represented to the funder as covering the entire exposure and deliberately excludes promo; waitlist-deposit breakage income is too rare to fund it (deposits overwhelmingly convert); the platform runs at ~zero operating margin.

Decision

Promo-origin credit redemptions produce no location transfer. The location hosts the booking without payout — the same economics as the free-first-practice promo, applied to the credits promo. Purchased-origin credits keep the full ~90c/credit payout unchanged.

Origin is determined per consumed balance (reliable since the creditPackageId stamp fix): credit_package_id or subscription_deposit_amount set = purchased; neither = promo. A booking consuming mixed balances pays out only the purchased steps.

Consequences

  • The promo reserve leaves the platform's books entirely: PROMO_RESERVE_FRACTION drops to zero, the reserve gate and audits track purchased credits only, and the bookkeeping dashboards' single credit-obligations number becomes CORRECT (only purchased credits are platform obligations) — resolving the dashboard-18 item-4 dispute in the simple direction.
  • The funder statement "the $6,500 covers our entire exposure" becomes exactly true.
  • Already-paid redemptions ($1,372) stay paid; no clawback. Beyond simplicity, deliberate: MG owns and operates every location (the LLCs are purely a business/accounting split), and the paid redemptions show as revenue growth at the receiving location, which is desired.
  • Because locations are commonly owned, this is intercompany cost allocation, not a partner negotiation. The former hard precondition (partner communication) downgrades to: an accounting note only (MG operates every location; the LLCs are purely a business/accounting split), so the service-period books stay consistent (promo bookings show zero location revenue going forward, unlike the grandfathered ones).
  • Member experience unchanged: credits spend identically; only the internal payout changes.

Rejected alternatives

  • Breakage-funded (forfeited deposits pay for redemptions): forfeitures are rare; deposits overwhelmingly convert. No real income stream.
  • Platform-funded from operations: ~zero margin; would silently erode the escrow cushion — the exact disease the reserve system exists to prevent.
  • Additional funder ask: contradicts the entire-exposure representation; crying wolf.