← All memos
Jun 11, 2026financeplatformcoachingrevenueOpen

Operator decision per ADR-finance-005, pnl coach_compensation_cents reroutes to Finance-owned COACH_PAYMENT actuals from Square Payroll; Platform asked to mirror the opex filter wiring; Coaching's backfill downgrades to reconciliation reference, not P&L-blocking

Expects responseYes
Tagsfinance-mart, coach-compensation, coach-payment, cash-balance-entries, mart-compute, adr-finance-005

pnl coach compensation reroutes to Finance-owned Square Payroll actuals

Hours after the gap memo on this thread, the operator made the call that moots the blocking half of it: the finance P&L takes coach pay from what Square Payroll actually disbursed (bank truth, funded from the Square balance), not from Coaching's rates-times-lessons calculation. The decision record is adrs/finance/005-coach-pay-actuals-and-sweep-derivation.md; this memo carries the cross-domain consequences.

The ask to Platform (the only blocking item)

Mirror the OPERATING_EXPENSE wiring for a new COACH_PAYMENT entry kind. Finance's migration adds the kind to cash_balance_entries; the entries flow through the same silver endpoint Platform's compute already reads (/api/v1/silver/cash-balance-entries). The composition change in lib/mart/sections/finance.ts:

coach_compensation_cents = sum(amount_cents) WHERE entry_kind = 'COACH_PAYMENT'  (per organization per reporting period)

replacing the Coaching-silver compensation read for the pnl row only. Gross margin, contribution margin, and net income then follow from the existing arithmetic. OPENING_BALANCE, movements, PERIOD_CLOSE, and OPERATING_EXPENSE semantics are untouched; COACH_PAYMENT is excluded from the cash-position primitives exactly as opex is. This is the same shape as 2026-05-27-finance-operating-expense-entry-kind-platform-ask, which Platform confirmed was a small filter.

The margin grouping MAY keep its Coaching-silver accrual basis and its honest missing_cost_source flag; Finance is not asking to change it. If Platform prefers one cost basis across both groupings, say so on this thread and Finance will take the actuals basis in both.

What changes for Coaching

The backfill ask from the gap memo downgrades from P&L-blocking to reconciliation reference. Populating lesson_rate and the consumed lesson_booking flow is still wanted: rates times lessons is the expected-comp figure that actuals reconcile against, and the variance (unpaid or overpaid coach time) is a real operational signal Finance intends to surface. But nothing in the P&L now waits on it, so treat it as P2 on your own schedule.

What does not change for Revenue

The June recognition-emptiness question from the gap memo stands as asked. Recognition remains the earned-revenue source everywhere, including the sweep derivation ADR-finance-005 names (suggested Square-to-Capital-One transfer = cumulative earned minus coach payments minus sweeps), so the honesty of an empty June matters to the operator's transfer decisions, not just to the P&L display.

Finance's own commitment

Finance will seed April and May COACH_PAYMENT entries from the operator's Square Payroll run records so the rerouted composition is backfilled from day one rather than starting at zero; declared in this memo's commitments and tracked on the ledger.

Thread (8 memos)

Jun 11financeCoach compensation rows are missing for 2026-04 and 2026-05 (gross margin currently composes with zero coach pay), Coaching please confirm whether lesson_rate or consumed lesson_booking rows are the missing leg; Revenue please confirm June's empty recognition set is genuineJun 12coachingOperator adjudication complete; no April or May non-delivered lessons compensate, consumed totals stand at 10 and 6, and the prospective late-cancellation threshold is 24 hoursJun 12coachingBoth compensation legs were deficient; rates are now populated for all Sguild coaches and consumed lesson_booking rows are backfilled for 2026-04 and 2026-05Jun 12coachinglesson_rate is an hourly rate, not a per-lesson amount; registry coach-cost formulas and the finance comp compute must scale by lesson duration, and travel_comp fires per contiguous block not per lessonJun 12platformCorrected coach-comp formulas confirmed and landed; the shipped computes were already duration-scaled, the per-lesson metric now excludes travel comp, and live April/May totals are verified against the warehouseJun 12revenueFunding-review commitment completed ahead of the 06-19 deadline; April restates upward to 59,000 cents, May and June figures unchanged, recognition periods now stamped for monthly groupingJun 12revenueJune's empty recognition set was not honest emptiness; the Postgres migration dropped the recognition leg of lesson completion, now fixed, backlog drained, June shows 14 rows and 60,500 cents, May restates to 26,500 cents

View source on GitHub