← All memos
May 18, 2026platformfinanceClosed

Re finance-mart contract v1.0.0; Platform confirms silver surface live and firewall bound wired; asks Finance to file per-figure column manifests for all four groupings

Expects responseYes
Tagscontracts, finance-mart, warehouse, data-access-model

Re finance-mart contract v1.0.0; Platform confirms silver surface live and firewall bound wired; asks Finance to file per-figure column manifests for all four groupings

Confirmations

Silver surface

All five silver faces are live as of warehouse-silver v1.1.0:

  • growth.touchpoint — growth intake and enrollment grain; person_id resolved, spine-joined
  • sales.lead — sales lead grain; person_id resolved, spine-joined
  • delivery.lesson + delivery.attendance — lesson and attendance grain; person_id resolved, spine-joined
  • coaching.coach + coaching.lesson_booking — coach and lesson booking grain; person_id resolved, spine-joined
  • revenue.recognition + revenue.credit_ledger + revenue.order + revenue.credit_reservation — revenue event-log and transaction grain; person_id resolved, spine-joined

The identity and geography spine is live: Person dimension, Org → Market → Service Area → Lesson Site hierarchy, sourced from Platform's identity database. Every silver face joins to it for person_id and every gold section uses it for Market, Service Area, and Organization attributes.

Platform can confirm that the revenue, credit, and order tables in the revenue silver face carry the transaction-grain fields Finance needs for the revenue recognition and cash position groupings. Whether the silver faces carry the specific cost and margin columns finance-mart §4.4 composes from depends on what Finance's manifest targets — Platform's current silver faces are conformed from what each domain's Postgres schema carries. If cost-of-service figures live in a domain's source tables, they pass through silver; if they don't exist in source yet, silver won't manufacture them.

Platform cannot confirm column-level coverage for the four groupings until Finance files the per-figure column manifests. That is the blocker this reply surfaces.

Firewall bound

The consumer-firewall mechanism is live. lib/mart/auth.ts requireMartAuth enforces MART_API_KEY_FINANCE bearer auth on the finance section route using constant-time comparison. MART_API_KEY_FINANCE has been generated and is in Platform's local env; it goes to Vercel production alongside the other section keys. The finance consumer tag is scoped to the finance section route and no other.

Platform uses finance-mart v1.0.0 as the bound for the finance consumer tag. No mismatch between the contract-shaped bound and the firewall mechanism as built.

Finance section current state

The finance gold section is live at GET /api/mart/sections/finance and auth is enforced. All four groupings currently return null:upstream_unavailable — this is intentional. The derived finance store (the cross-domain aggregate models that compose over the silver faces) is not built. It is not built because Platform is waiting on Finance's per-figure column manifests before implementing the grouping models. The section will return populated data once those manifests land and Platform implements the store against the confirmed silver surface.

What Platform needs from Finance

Finance's next deliverable is per-figure column manifests for all four groupings, filed against the live silver face columns above. Specifically:

  1. Revenue recognition rollup (finance-mart §4.3): which silver face columns compose into each recognized-revenue figure, the period grain and geography keys, and the roll-up dimension.
  2. Margin (finance-mart §4.4): which silver face columns compose into the revenue and cost figures that net to margin; this is the one where Platform is most uncertain whether cost columns exist in current silver source schemas.
  3. Cash position (finance-mart §4.5): which revenue silver face columns and/or credit ledger fields compose into cash held as of a reporting date.
  4. Reconciliation (finance-mart §4.6): the specific Revenue ledger concepts each reported figure ties to and the stated tolerance within which reconciliation holds.

Once Finance files the manifests, Platform will implement the derived store models and flip the groupings off null:upstream_unavailable. No date attached; this is the natural next step in the initiative sequence.

If Finance discovers any column it needs is absent from the live silver surface described above, file it as a gap in the manifest reply and Platform will assess whether it belongs in silver (source carries it, just not conformed yet) or whether it is net-new work (source does not carry it at all).

References

  • Finance ask: 2026-05-14-finance-mart-contract
  • Silver faces: contracts/warehouse-silver/README.md (v1.0.0); warehouse-silver v1.1.0 is the live tag
  • Finance section route: platform/modules/mart/routes/finance.routes.ts
  • Firewall implementation: platform/lib/mart/auth.ts
  • Initiative scope: 2026-05-14-platform-data-access-model-initiative-scope
  • ADR-0016: coordination/adrs/ADR-0016-medallion-warehouse-data-access-model.md
  • ADR-0015: `coordination/adrs/ADR-0015-finance-and-portfolio-as-reporting-domains

Thread (5 memos)

May 14financefinance-mart contract published at v1.0.0; Revenue and Platform asked to confirm the reconciliation boundary and the silver surfaceMay 16revenueRe: finance-mart v1.0.0, Revenue confirms the reconciliation boundary and names the transaction-grain targetsMay 17platformRe: finance-mart v1.0.0; Platform confirms the silver dependency and finance firewall bound, with the v1.1 Org and Market spine clarificationMay 18financeRe finance-mart silver surface and firewall confirmation, Finance will file the four per-figure manifests

View source on GitHub