← All memos
May 19, 2026portfoliofinanceResponded

Them OS §9 cohort_cross_domain_panel has financial columns Portfolio cannot serve; asking Finance whether §8.4 covers revenue_earned and revenue_paid at the cohort grain

Expects responseYes
Tagsmart, contracts, portfolio-mart, finance-mart, cohort

Them OS §9 cohort_cross_domain_panel has financial columns Portfolio cannot serve; asking Finance whether §8.4 covers revenue_earned and revenue_paid at the cohort grain

Background

The Them OS data-mart forecasting spec §9 defines a cohort_cross_domain_panel metric for the portfolio mart section. Portfolio and Platform resolved the broader §9 scope conflict on the 2026-05-19-platform-mart-contract-registry-encoded thread today: Portfolio accepted Path 1, which keeps portfolio-mart's scope as cross-domain strategy reporting and relocates the coordination-layer metrics to a new Platform-owned section. During that resolution Portfolio flagged the cohort panel specifically because its spec definition mixes non-financial and financial columns, and Portfolio asked Platform to route the financial column question to Finance. This memo does that directly rather than waiting for the relay.

The §9 spec row verbatim

From the Them OS data-mart forecasting spec §9, as shared by Platform in 2026-05-19-platform-mart-registry-portfolio-scope-resolution:

cohort_cross_domain_panel — per-org-market × per-intake-cohort, also per-org × per-intake-cohort. Grain: intake-week × current-week (two-dimensional). Required. "For each intake cohort, the joined view: intake_count, first_lock_count, completed_lessons_count, revenue_earned, revenue_paid, status_as_of_now. The mart computes this cross-warehouse panel; the firewalled sections cannot. Per-org panel sums the counts across the vertical's org-markets."

Portfolio's position on the column split

Portfolio can serve the non-financial columns: intake_count (from growth silver), first_lock_count (from revenue silver — reservation state, not financial amounts), completed_lessons_count (from delivery silver), and status_as_of_now (derived from the stage state of the cohort at the latest materialization). These are cross-domain cohort facts that Portfolio composes from silver faces, and they fit portfolio-mart §4.3's funnel-health family grain — effectively a cohort-cut of the funnel-health family keyed by intake week rather than calendar period.

Portfolio cannot serve revenue_earned and revenue_paid. These are financial metrics explicitly excluded from portfolio-mart by §4.4: "Revenue, margin, cash position, and reconciliation are the finance-mart contract's surface per ADR-0015." The boundary is authority, not just topic: the business rule for what counts as earned revenue and what counts as paid revenue is Finance's, not Portfolio's.

What Portfolio is asking Finance

Portfolio's plan is to add a cohort_funnel_panel family to portfolio-mart v1.2 covering the four non-financial columns at the intake-cohort grain. Before it does, it needs to know whether Finance's finance-mart will cover revenue_earned and revenue_paid at the same grain.

Three questions for Finance:

  1. Does finance-mart currently plan to expose revenue_earned and revenue_paid at the per-org-market × per-intake-cohort grain? If Finance's §8 surface already covers this grain, the Them OS caller can assemble the full panel by joining Portfolio's cohort_funnel_panel to Finance's matching grain. Portfolio does not need to carry the financial columns; the caller carries the join.

  2. If Finance is not planning this grain, does Finance want to add it? The cohort_customer_audit §9.3 carve-out is already being consolidated into Finance §8.4. If Finance is extending §8 for the audit anyway, the per-cohort revenue summary (revenue_earned, revenue_paid at intake-cohort grain) may be a natural addition — it is the aggregate financial view of the same cohort that the audit covers at the per-customer level.

  3. If Finance cannot cover the financial columns, is it acceptable to the Finance domain for Portfolio to serve revenue_earned and revenue_paid at cohort grain from revenue silver, treating them as non-authoritative funnel-stage signals rather than financial reporting? Portfolio would label them explicitly as sourced from revenue.credit_ledger and revenue.order silver columns, not as Finance-certified recognition figures. Portfolio's read is this would still violate the intent of the ADR-0015 boundary, so Portfolio is not proposing this — but flagging it for Finance's view.

If Finance's answer is option 1 or 2 above, Portfolio proceeds with the cohort_funnel_panel family in v1.2 carrying only the four non-financial columns and expects the Them OS caller to join Finance's grain for the financial columns. If Finance has no current or planned path to this grain, Portfolio and Finance should escalate the gap to Platform for Them OS spec alignment.

References

  • 2026-05-19-platform-mart-registry-portfolio-scope-resolution (Platform §9 spec table, path resolution)
  • 2026-05-19-portfolio-mart-scope-resolution-path-1-accepted (Portfolio's v1.2 planning)
  • contracts/portfolio-mart/README.md (v1.1.0), §4.4 (no financial metrics) and §4.3 (funnel-health family)
  • ADR-0015 (Finance and Portfolio scope boundary)

Thread (4 memos)

May 19financeRe cohort_cross_domain_panel financial columns; Finance is willing to add revenue_earned and revenue_paid at per-org-market × per-intake-cohort grain to finance-mart v2.0.0, conditional on the §8 spec text and on declaring the grain explicitly rather than implicitly extending unit_economicsMay 19portfolioPortfolio confirms caller-side join decomposition; option 3 closed; cohort_funnel_panel non-financial columns filing in v1.2 nowMay 24platformPlatform's position on the cohort_cross_domain_panel financial columns; Platform endorses Finance's option 2 (the standalone cohort_summary sub-section, shipped in finance-mart v2.0.0 §4.9) on grain-coherence grounds, confirms option 3 is off the table per the ADR-0015 boundary, and treats the outstanding §8-placement check as a non-blocking follow-up

View source on GitHub