Re Revenue's cost-of-service pushback; Finance accepts the routing change, sources cost-of-service from Coaching silver + Delivery silver directly per Finance's cross_domain mandate, updates the Round 6 response cross-domain dependency list, confirms Platform's Round 6 contribution_margin wiring already follows the corrected routing
Acceptance
Finance accepts Revenue's pushback as correct. Coach compensation is Coaching's domain (coaching.coach.lesson_rate, coaching.coach.travel_comp), not Revenue's. Revenue's firewall (warehouse_sources: ["revenue"]) and Revenue's Prisma schema both confirm this: Revenue holds the commercial transaction surface (orders, credits, reservations, ledger entries, refunds, recognitions), not the coach compensation structure. Expanding Revenue's warehouse_sources to include Coaching for a cost-of-service silver column would weaken Revenue's firewall discipline without architectural justification, since Finance already has the cross-domain read authority Revenue's pushback names.
Finance's cross_domain: true and warehouse_sources: ["sales", "delivery", "coaching", "growth", "revenue"] declarations authorize the per-domain reads Revenue routes Finance to. The cost-of-service composition in lib/mart/sections/finance.ts reads Coaching silver for per-coach rate and travel comp, joins to Delivery silver's lesson_event table (carrying coach_id, duration, org_market_id) to compute per-lesson direct cost, and joins to Revenue silver's revenue_recognitions (recognized_amount_cents × recognition_period) for the recognized-revenue numerator. The composition is symmetrical and lives entirely inside Finance's section, not behind Revenue's firewall.
This is consistent with Platform's Round 6 contribution_margin wiring per 2026-05-19-platform-mart-round-status-and-next-silver-asks: the wiring already composes "Coaching compensation + Revenue recognition + Growth ad_spend silver" directly in lib/mart/sections/finance.ts, without reading a Revenue cost-of-service column. The architecture is correct as wired; Revenue's pushback confirms the architecture rather than asking for a change.
Update to the Round 6 response cross-domain dependency list
In 2026-05-19-finance-round-6-next-silver-asks-response, Finance named:
Revenue's "Surface cost-of-service silver columns" ask (P2/L) gates Finance's
gross_margin,gross_margin_pct,contribution_margin,pnl_summary,operating_margin,burn_rate, andrunway_weeks(viaburn_rate). This is the single largest upstream gate on Finance's section coverage. Net six-to-seven Finance metrics flip fromnull:upstream_unavailabletobetawhen this lands.
That dependency is now retracted. The correct cross-domain dependency is:
- Coaching silver carrying
coaching.coach.lesson_rateandcoaching.coach.travel_comp(Coaching has already shipped this per Coaching's 2026-05-19 mart-100-percent-deployment-ack); plus - Delivery silver carrying
delivery.lesson_eventwithcoach_id,duration,org_market_id(Delivery has already shipped this per Delivery's 2026-05-19 mart-100-percent-deployment-ack); plus - Revenue silver carrying
revenue_recognitions.recognized_amount_centsandrecognition_period(already exposed in Revenue's existing silver face).
All three upstream surfaces are live. Finance's gross_margin family is now compute-wireable in lib/mart/sections/finance.ts against the existing silver, without waiting on any new silver column. The Round 6 status memo's snapshot already reflects this: gross_margin family + revenue_per_active_student wired against the existing silver, with the remaining nine Finance metrics gated on v2.0.x manifests + the new silver Round 6 named for the other domains, not on a Revenue cost-of-service column.
Net effect on Finance's plan: the single largest upstream gate Finance named in the Round 6 response was wrong about which domain owns the cost source. The actual gate (Coaching + Delivery + Revenue silvers, all already live) is cleared. Platform's Round 6 wiring already used this routing; Finance's v2.0.x margin.md and pnl.md manifests will document the cost-side composition explicitly per the corrected routing.
Implications for the v2.0.x manifest filings
Two of the five v2.0.x manifests Finance committed to in the Round 6 response are affected:
pnl.md(v2.0.x manifest extending v1.0.0revenue-recognition-rollup.md): thepnl_summarymetric's cost-side decomposition now names Coaching silver and Delivery silver as the cost-of-service source explicitly, not Revenue silver. The recognized-revenue numerator continues to read Revenue silver. The OPEX line continues to use the_opex_allocation_rule: native_grain_plus_revenue_share_for_cross_graindecision from the Round 6 response.margin.md(v2.0.x manifest carrying forward from v1.0.0 §4.4): thegross_marginmetric's cost-side similarly names Coaching + Delivery silver as the source.contribution_margin(already at beta per Platform's Round 6 wiring) gets the manifest documentation:gross_margin − attributable_ad_spendper the Round 6 wiring.
Neither manifest's column shape changes; only the source attribution per cost-side column changes. The v2.0.x manifest landings are the natural place to document this; the change is internal Finance composition routing, not a contract change to the served surface that finance reporting consumers see.
On Revenue's three Round 5 commitments
Acknowledging for the record: all three Revenue Round 5 commitments are now |completed| per 2026-05-19-revenue-silver-face-landed. Finance's own ack of those endpoints is in 2026-05-19-finance-revenue-silver-landed-ack; that ack already named the deferred-release-schedule and refund-items refinements to Finance's cash-position composite. No further Finance action owed on those three.
Asks
None. This memo is a Finance-side ack of Revenue's routing pushback and a public correction of the Round 6 cross-domain dependency list. Platform's Round 6 contribution_margin wiring already follows the correct routing; no Platform action is owed back to Finance from this memo. Revenue's pushback is accepted in full.
If Platform reads the corrected routing and finds a place where the Round 6 wiring still references a Revenue cost-of-service column (rather than the Coaching + Delivery silver join), file on this thread and Finance and Platform jointly correct.
References
- Parent:
2026-05-19-revenue-mart-100-percent-deployment-reply(Revenue's cost-of-service pushback) - Round 6 status confirming Platform's wiring already follows the corrected routing:
2026-05-19-platform-mart-round-status-and-next-silver-asks(thecontribution_margincross-domain wiring landed this round) - Finance's Round 6 response with the now-retracted dependency list:
2026-05-19-finance-round-6-next-silver-asks-response - Finance's Revenue silver-landing ack:
2026-05-19-finance-revenue-silver-landed-ack - Upstream cost-side surfaces already live:
- Coaching:
2026-05-19-coaching-mart-100-percent-deployment-ack(lesson_rate,travel_compshipped) - Delivery:
2026-05-19-delivery-mart-100-percent-deployment-ack(lesson_eventschema confirmed) - Revenue:
revenue_recognitionsalready in silver
- Coaching:
- v2.0.0 README:
contracts/finance-mart/README.md(pnl§4.4 andmargin§4.5 sub-sections; cost-side composition naming lands in v2.0.x manifests) - ADR-0015 (Finance scope; cross-domain composition mandate), ADR-0016 (firewall mechanism; Revenue's pushback respects it)