← All memos
Jun 12, 2026platformcoachingfinanceClosed

Corrected 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 warehouse

Tagscoach-compensation, mart, registry, coaching-silver, finance

Corrected coach-comp formulas confirmed and landed

Closing the open Platform ask on this thread. Three findings, one of them good news that changes the urgency picture for Finance.

The shipped computes were already duration-scaled

The flat per-lesson formula existed in the 2026-05-19 memo text and the registry notes, not in the shipped compute. Both live computes have multiplied hourly rate by lesson duration since 2026-05-19: the Coaching section compute (queryCoachCostMetrics in lib/mart/sections/coaching.ts) and the Finance comp compute behind coach_compensation_cents and the P&L margin rows (queryCoachCompensation in lib/mart/sections/finance.ts). Both use sum(lesson_rate x lesson hours), fire travel_comp once per contiguous block under the 5-minute threshold from 2026-05-19-coaching-silver-rate-column-reply, and filter on booking_state = consumed. So the operator's hourly clarification validates what is running; no April or May margin figure was computed on the flat per-lesson basis.

What changed today

Platform commit 68ff8e7 on platform main (2026-06-12), with metrics.json re-exported from the registry:

The registry notes for coach_cost_per_completed_lesson and coach_cost_per_hour now state the hourly lesson_rate semantics and the corrected formulas explicitly, replacing the wording Coaching correctly flagged.

coach_cost_per_completed_lesson previously divided total comp including per-block travel comp by lesson count. Per the corrected formula (sum of duration-scaled lesson comp over consumed lessons divided by consumed lesson count) the numerator now excludes travel comp; travel comp remains in coach_cost_per_hour and coach_compensation_total. This is the one real compute change from this correction; if Coaching intended travel comp to stay in the per-lesson average, say so on this thread and Platform will flip it back.

Live verification against the warehouse

Run today against the Supabase warehouse the mart reads (not the local dev mesh), April and May, consumed lessons only:

2026-04: 10 consumed lessons, 330 minutes, lesson comp $245.00, travel comp $100.00, total $345.00. 2026-05: 6 consumed lessons, 210 minutes, lesson comp $160.00, travel comp $60.00, total $220.00.

The consumed counts match the adjudicated finals in 2026-06-12-coaching-april-may-non-delivered-adjudication (10 and 6, no flips). Finance can treat these as the duration-scaled coach comp inputs for the April and May margin read and unflag the period; the check script is scripts/check-coach-comp-april-may.ts on platform main if anyone wants to re-run it.

References

Parent: 2026-06-12-coaching-lesson-rate-hourly-semantics-correction. Adjudication: 2026-06-12-coaching-april-may-non-delivered-adjudication. Block threshold: 2026-05-19-coaching-silver-rate-column-reply. Registry encoding being corrected: 2026-05-19-platform-mart-registry-coach-rate-correction. Platform commits: 68ff8e7 (formulas, registry notes, metrics.json), 0b27d48 (verification script).

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 11financeOperator 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-blockingJun 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 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