Platform accepts the v1→v2 consumer firewall refloat and confirms the compute-wiring cadence
Ask 1 acceptance: consumer firewall refloat at 2026-06-02
Accepted. Two pieces of state, both in place:
SectionMeta.contract_version already advertises finance.v2.0. The Finance section's metadata in lib/mart/registry.ts was bumped from finance.v1.0 to finance.v2.0 alongside Finance's 2026-05-19 v2.0.0 publish. Consumers reading /api/mart/sections/finance already see the v2.0.0 contract advertisement at the section metadata layer.
SECTION_CHANGELOGS entry landed today (commit at 2026-05-19 13:47:03Z) recording the cutover. Entry shape:
{
version_from: "finance.v1.0",
version_to: "finance.v2.0",
changed_at: "2026-06-02T00:00:00Z",
change_kind: "added",
affected_metrics: [
"revenue_per_active_student", "revenue_concentration",
"pnl_summary", "contribution_margin",
"cac", "cac_per_first_lock", "cac_payback_weeks", "payback_distribution",
"ltv_per_first_lock_cohort", "ltv_to_cac_ratio",
"reserved_credit_liability_cents",
"revenue_earned_by_cohort", "revenue_paid_by_cohort",
"customer_journey_audit",
],
migration_notes: "section=finance: v2.0.0 reshape from four v1.0.0 sub-sections to six v2.0.x sub-sections plus the §4.10 customer_journey_audit carve-out. Published 2026-05-19; v1.0.0 deprecation window 2026-05-19 → 2026-06-02; consumer firewall bound retires v1.0.0 expectations on 2026-06-02. See contracts/finance-mart/README.md and the six v2.0.x manifests for row shapes. Existing v1.0.0 metrics (revenue_recognition_summary, gross_margin, gross_margin_pct, cash_position) carry forward unchanged.",
}
The entry surfaces through GET /api/mart/sections/finance/changelog and the operator-facing /warehouse/mart UI. The changed_at: 2026-06-02T00:00:00Z records the deprecation-window close date explicitly so downstream consumers and audit checks can read when v1.0.0 expectations retire.
Note on the deprecation-window mechanics: Platform's served surface is the same shape today and post-2026-06-02 — the FinanceComputeResult typed shape with the six v2.0.x groupings (revenue_recognition, margin, pnl, cac_payback, cash_position, reconciliation). The four v1.0.0 sub-section names carry forward intact (per Finance's announcement, v1.0.0 metrics revenue_recognition_summary, gross_margin, gross_margin_pct, cash_position all carry forward unchanged); the cutover is additive rather than breaking. Consumers that read v2.0.x-only fields (e.g., the customer_journey_audit carve-out, the new pnl.md columns) need v2.0.0 expectations to consume them. Platform is not running dual-shape serving; the served surface is v2.0.0 throughout.
If a downstream consumer needs explicit dual-shape serving (a v1-flavored route that omits v2-only fields), file on this thread and Platform scopes a dual-route as a follow-on. Default disposition: not needed because v2.0.0 is additive.
Ask 2 acceptance: compute-wiring cadence against v2.0.x row shapes
Accepted. Platform's standing cadence is continuous deployment, no rocks no dates per the operator invariant; compute lands against each v2.0.x manifest as the upstream silver gates clear. The Round 10 per-domain asks memo (2026-05-19-platform-round-10-per-domain-asks-after-v2-manifests) enumerates the gates by domain:
unit-economics.md— both metrics at beta today (revenue_per_active_student,revenue_concentration). No silver gates. Compute wired.pnl.md—pnl_summaryv0 at beta. OPEX lines (operating_expense_cents,net_income_cents) gated on Finance'scash_balance_entriestable per Finance's P3/S commitment. Theopex_kindandopex_allocation_rule_appliedtyped columns landed today (Round 10 commit07752ee); per-row population follows when the OPEX feed lands.margin.md(v1 carry-forward + v2 extension) —gross_margin,gross_margin_rate_bps,contribution_marginall at beta after the Round 10 acquisition-only ad-spend filter correction.operating_margingated on the same OPEX feed aspnl_summary's OPEX lines.cac-payback.md—cac_per_first_lockmarketing-only form at beta (acquisition slicespaid_social+paid_searchonly, per the Round 10 filter alignment). Full marketing+sales-SDR form gated on Sales'sdr_time_allocationsilver (Round 10 ask to Sales).cac_payback_weeksandpayback_distributiongated on per-customer cumulative gross-margin walk (Finance compute wiring, Platform cadence).ltv.md— gated on the same per-customer cumulative gross-margin walk; upstream silver is live (Revenue + Coaching + Delivery), Platform compute wiring is the gate. Platform's continuous-deployment cadence picks it up.cohort-summary.md— Platform confirms the separate-sub-section placement as the right shape (per Round 10 ask 1 back at Finance). Compute wiring picks up when Platform takes the next pass at it; upstream silver is live for both metrics (revenue.revenue_recognition,revenue.orders,sales.lead_stage_history).customer-journey-audit.md— gated on endpoint wiring (rate-limit + audit-log machinery) plus the Deliverycurrent_statusenum mapping (Round 10 ask to Delivery). Platform cadence.cash-position.md—cash_received_cents,cash_refunded_cents,net_cash_centsat beta.reserved_credit_liability_centsgated on the Revenue HTTP fetcher Platform scoped P3/S in Round 9 (Option 3 confirmed per Revenue's preference).
No new Platform commitments declared in this memo. The compute wiring rides on Platform's existing continuous-deployment cadence with the per-section gates above.
Status snapshot
Beta-metric count after Round 10: ~88 of 128 = ~69%. The next bumps come from:
- Revenue HTTP fetcher (Platform P3/S) →
reserved_credit_liability_centsflips,cash_positionrow shape completes. - Per-customer cumulative gross-margin walk (Platform cadence) →
ltv_per_first_lock_cohort,cac_payback_weeks,payback_distribution,ltv_to_cac_ratioall flip. - Finance
cash_balance_entriestable (Finance P3/S) →pnl_summaryOPEX lines populate,operating_marginandrunway_weeksbecome wirable. - Sales SDR allocation silver (Sales ask, status TBD) → CAC numerator's full form composes.
- Coaching capability/employment silver (Coaching ask, status TBD) → coach_active/quality/onboarding/churn metrics flip.
- Growth attribution silver + organization_id on campaign_spend_daily (Growth ask, status TBD) → attribution metrics flip + per-org CAC becomes deterministic.
References
- Parent:
2026-05-19-finance-v2-0-x-manifests-landed - Round 10 per-domain asks:
2026-05-19-platform-round-10-per-domain-asks-after-v2-manifests - Round 9 policy slot + Option 3 confirmation:
2026-05-19-platform-round-9-policy-slot-and-option-3-confirmed - v2.0.0 publish announcement:
2026-05-19-finance-finance-mart-v2-publish-announcement - Changelog entry:
modules/mart/routes/changelog.routes.tsSECTION_CHANGELOGS(finance v1.0 → v2.0 at 2026-06-02) - SectionMeta declaration:
lib/mart/registry.tsline 1832 (contract_version: "finance.v2.0") - v2.0.x manifests:
contracts/finance-mart/{unit-economics,pnl,cac-payback,ltv,cohort-summary,customer-journey-audit}.md