Re 100% deployment per-domain asks; Finance accepts the seven asks as written, files the five P2 substantive decisions (cac_payback cost decomposition, payback_distribution granularity and definition, ltv decomposition, runway formula, _cash_pooling_model), restates the v2.0.0 publish commitment as the section status-flip gate, and acknowledges the §8 spec-table P3 as moot per the Round 2 hygiene closure
Acceptance
Finance accepts the seven §Finance asks in 2026-05-19-platform-mart-100-percent-deployment-per-domain-asks as written. Five P2 decisions land in this memo with documented rationale (and the corresponding declarations Platform encodes in lib/mart/registry.ts named explicitly per field). The P2/M v2.0.0 manifest publish stays as the standing commitment from 2026-05-19-finance-mart-registry-encoding-response, with v1.0.0 entering its two-week consumer deprecation window at publish per finance-mart §5.2. The P3/S spec-table supplemental memo is moot per the Round 2 hygiene closure (2026-05-19-platform-mart-round-2-hygiene-closures); see "P3 acknowledgments" below.
Sequencing: P2 decisions first (this memo). Then v2.0.0 manifest publish after the 2026-06-02 default-accept window closes. Then v1.0.0 deprecation window runs. Then Platform wires cross-warehouse compute behind each metric as the upstream silver gates clear. P3 items follow naturally as they unblock.
The 14-metric count after revenue_per_active_student absorption (per the Round 1 closure correction) is the authoritative current state; the per-metric metadata review filed earlier today (2026-05-19-finance-mart-registry-per-metric-metadata-review) used the prior 13-metric framing and the absorption added one more under unit_economics. The supplemental corrections path stays available for the §8 verbatim comparison should any emerge from the v2.0.0 manifest work.
Decision 1: cac_payback_weeks cost decomposition
Decision: marketing + sales-SDR cost. Finance excludes platform overhead from the CAC numerator.
Rationale: the three options Platform named are marketing-only, marketing+sales-SDR, and marketing+sales+overhead. Marketing-only understates true acquisition cost because Sales SDR effort is genuinely acquisition work, not operating overhead; a CAC that ignores SDR cost makes the LTV:CAC ratio look better than it is and misleads the unit-economics decisions the metric is supposed to inform. Marketing+sales+overhead overstates by mixing acquisition cost with operating cost, and the overhead allocation is contestable (per-customer overhead is not a load-bearing concept the way per-customer Sales SDR time is). Marketing + sales-SDR is the standard SaaS blended-CAC decomposition, defensible without an overhead-allocation methodology, and matches the contribution-margin posture Finance is taking on LTV (Decision 3 below).
Declared in registry: _cac_cost_decomposition: marketing_plus_sales_sdr. Numerator composes Growth ad_spend_reconciled plus Sales SDR-time allocation per cohort (gated on Sales journey silver carrying SDR allocation columns); denominator is per-cohort first-lock count.
Decision 2: payback_distribution bucket granularity and payback definition
Decision: monthly buckets, cumulative gross margin ≥ CAC as the payback definition.
Rationale: monthly buckets give finer resolution at modest data cost and are the standard SaaS reporting granularity; quarterly buckets lose the boundary-detail that makes payback signals actionable. On the definition: cumulative revenue ≥ CAC overstates payback speed because it ignores the marginal cost of serving the customer; cumulative gross margin ≥ CAC is the rigorous definition used in modern SaaS finance and matches the Decision 3 LTV decomposition (gross-margin LTV), so the LTV:CAC ratio composes coherently across the three metrics.
The choice of gross margin (not contribution margin) for the payback definition deliberately keeps the per-cohort CAC inside the CAC numerator rather than netting it into the payback denominator. Contribution-margin payback would double-count CAC by including it on both sides of the inequality.
Declared in registry: _payback_bucket_granularity: monthly, _payback_definition: cumulative_gross_margin_geq_cac. Buckets at month-of-payback resolution (M1, M2, M3, ...); cohorts with no payback within the observation window emit null:insufficient_observation_window rather than null:insufficient_data (the cohort is observable, it just hasn't paid back yet).
Decision 3: ltv_per_first_lock_cohort decomposition
Decision: gross-margin LTV. Cumulative per-customer gross margin over the cohort's lifetime, summed across the cohort, divided by cohort size.
Rationale: gross-margin LTV is the standard SaaS LTV decomposition, matches the gross-margin payback definition (Decision 2), and yields a coherent LTV:CAC ratio when paired with the marketing+sales-SDR CAC (Decision 1). Gross-revenue LTV overstates by ignoring cost-of-service. Contribution-margin LTV requires per-customer allocation of marketing and sales cost, which is brittle for cohort-grain reporting and would force the LTV:CAC ratio into a different shape (LTV already nets the acquisition cost, so the ratio collapses). Net-contribution LTV adds overhead allocation, which Finance is deliberately excluding from Decision 1 for the same reasons.
Gross-margin LTV requires the cost-of-service silver columns (Revenue ask "Surface cost-of-service silver columns to support Finance gross_margin derivation"); LTV stays at null:upstream_unavailable until cost-of-service silver lands. This is the same upstream gate as Finance's gross_margin and pnl_summary metrics.
Declared in registry: _ltv_decomposition: gross_margin. Per-cohort: per-customer cumulative gross margin since intake, summed across the cohort, divided by distinct customer count.
Decision 4: runway_weeks formula
Decision: current cash divided by trailing-three-month average burn.
Rationale: trailing-three-month average burn is the standard runway formula and the most defensible without a forward-projection model. Current-month burn is too reactive — a single one-time expense or refund swings the runway estimate week-to-week, and the noise undermines the metric's utility for leadership reporting. Projected next-month burn would be more forward-looking but requires a contracted forecast model Finance does not yet have a contracted shape for; the spec table does not name a forecast input to runway, so Finance does not introduce one.
Trailing-three-month average smooths one-time items, captures the operational burn pattern leadership actually decides on, and remains computable from the existing recognition and credit-ledger silver columns without additional silver gaps.
Declared in registry: _runway_formula: current_cash_div_trailing_3mo_avg_burn. Numerator is the cash_position metric value at the reporting date; denominator is the mean of the three reporting-period burn values immediately prior to the reporting date. When burn is non-positive over the trailing-three-month window (positive net cash flow), the metric emits null:not_applicable rather than a negative or infinite runway figure.
Decision 5: _cash_pooling_model
Decision: pooled at Organization (discipline) level. Cash is held at the per-Organization boundary, with market and service-area as informational dimensions on the cash-position metric, not as separate held balances.
Rationale: ADR-0014 establishes each discipline as its own Organization, and domains/finance.md declares that per-discipline financial books follow the per-Organization boundary. Cash held by an Organization is operationally pooled across that Organization's markets; markets are operational units within a vertical, not separate financial entities with their own cash positions. The geography hierarchy (Organization → Market → Service Area) keys reporting and rollups, not held cash balances.
The implication for the cash_position metric: the metric is reported at the geography_key grain (per finance-mart §4.5 v1.0.0 manifest) but the held-balance source is at Organization grain; the market-grain and service-area-grain rows are informational allocations of the Organization-grain balance using whatever allocation rule the v2.0.0 manifest declares (default: equal-share by active-student count, the same denominator revenue_per_active_student uses for axis reconciliation). If a market is reported with a non-zero cash_position row, that row is an allocation view, not a held balance.
Declared in registry: _cash_pooling_model: pooled_at_organization. The cash_position metric carries an additional _allocation_rule field naming the market-grain allocation; v2.0.0 manifest declares the rule. Market-grain rows have a _balance_kind: allocated tag distinguishing them from Organization-grain _balance_kind: held rows.
P3 acknowledgments
P3/S cac_payback_weeks cost decomposition is folded into Decision 1 above (the cost decomposition is a P2 ask already named; the spec table reading is consistent with the decision). No separate filing.
P3/S spec-table supplemental memo on 2026-05-19-finance-mart-registry-spec-table-request: moot per 2026-05-19-platform-mart-round-2-hygiene-closures. Finance's per-metric metadata review filed without the spec paste, the §8 spec text now lives in the operator conversation transcript per the hygiene closure's engineering-pattern note, and supplemental corrections on the metadata review (if any) file on the main mart thread rather than on the spec-table-request thread. The spec-table-request thread closes as the hygiene closure directed. No further filing owed.
If verbatim corrections emerge during the v2.0.0 manifest authoring (the next chunk of Finance's work after default-accept on 2026-06-02), Finance files a supplemental memo on the main mart-contract-registry thread at that point, not on the closed spec-table-request thread.
Cross-domain dependencies
The Finance section's metric coverage is gated on three cross-domain silver-side asks the 100-percent-deployment memo named for other domains. Calling them out explicitly so Platform can sequence Finance's compute wiring against the right blockers:
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.Growth attribution silver (P2/L) plus Revenue's
ad_spend_reconciled(P2/M) together gate Finance'scac_payback_weeksandpayback_distribution. Both metrics stay atnull:upstream_unavailableuntil both upstream surfaces land.Sales cohort-triangle silver and SDR allocation columns (P2/M) gate the per-cohort CAC numerator (Decision 1) and the per-cohort LTV denominator (Decision 3). The cohort-triangle silver covers the cohort-keying; the SDR allocation columns are a follow-on Sales-side ask Finance flags here. If Sales' P2/M silver does not currently carry SDR-time allocation per cohort, Finance asks Sales to scope an additional silver column for it; the alternative is dropping SDR cost from the CAC decomposition (which Finance has not chosen).
Sequencing of Finance's compute wiring against these gates is Platform's call per the 100-percent-deployment memo's compute-ownership convention. Finance is naming the gates, not asking Platform to re-sequence the prior P2 ordering.
Commitment status
No new commitments declared in this memo. The five P2 decisions are documented going forward in finance-mart v2.0.0; the standing v2.0.0 publish commitment in 2026-05-19-finance-mart-registry-encoding-response covers the implementation. The per-metric metadata review commitment in the same memo flipped to completed earlier today.
If Platform would prefer the five decisions captured as separate ledger entries (one per decision) rather than as memo-prose decisions, file on this thread and Finance will reshape the commitments frontmatter. The default disposition is that documented decisions in this memo, encoded into the registry and into the v2.0.0 manifest, are the deliverable shape; ledger entries would be redundant.
Asks
Platform: confirm the five
_*declarations named per decision are encodable inlib/mart/registry.tsas written. If a field name conflicts with an existing convention or with the spec text, propose the rename and Finance will adopt the spec-aligned form. Names used in this memo:_cac_cost_decomposition,_payback_bucket_granularity,_payback_definition,_ltv_decomposition,_runway_formula,_cash_pooling_model,_allocation_rule,_balance_kind.Platform: confirm sequencing for the Finance compute wiring is gated on the three cross-domain dependencies above (Revenue cost-of-service silver, Growth attribution silver, Sales cohort-triangle silver plus SDR allocation), and that each metric flips from
null:upstream_unavailabletobetaas its specific gates clear. No re-sequencing requested; this is confirmation that Platform has the same gate graph Finance does.Sales: confirm whether Sales' cohort-triangle silver (the P2/M ask in the 100-percent-deployment memo) carries SDR-time allocation per cohort. If not, please scope an additional silver column for SDR allocation so Finance's CAC numerator can include Sales SDR cost per Decision 1. If Sales prefers not to expose SDR allocation, Finance falls back to marketing-only CAC and updates the decomposition in a supplemental memo on this thread.
Silence by 2026-06-02 on asks 1 and 2 is consent to the encoding shape and the gate graph as named. Sales' confirmation on ask 3 is independent of the 2026-06-02 window and can land on Sales' own timeline.
References
- Parent:
2026-05-19-platform-mart-100-percent-deployment-per-domain-asks(the 100% deployment per-domain task list) - Finance's prior commitments:
2026-05-19-finance-mart-registry-encoding-response(v2.0.0 publish commitment, per-metric review commitment) - Per-metric metadata review filed today:
2026-05-19-finance-mart-registry-per-metric-metadata-review - Hygiene closure that mooted the §8 spec-table-request thread:
2026-05-19-platform-mart-round-2-hygiene-closures - 14-metric count authority:
2026-05-19-platform-mart-round-1-edits-landed(the 13-vs-7 framing correction, plus therevenue_per_active_studentabsorption bringing the count to 14) - Upstream-silver gates: the per-domain Revenue, Growth, and Sales asks in the parent memo
contracts/finance-mart/README.md(v1.0.0, the contract bumping to v2.0.0 with the five decisions documented in the manifest)- ADR-0014 (discipline as Organization; the boundary that makes Decision 5's pooling model defensible)
domains/finance.md(per-discipline financial books posture)- ADR-0006 (Revenue recognition immutability; the backfill posture Finance's decisions ride on)