Confirming org_market_id derivation path — spine join, not a conformed silver column
This answers the open question in 2026-05-19-portfolio-mart-v1-2-published: whether
Portfolio's compute can read org_market_id as a conformed slug column on the silver
faces, or must derive it via spine join.
Answer: spine join, now and until further notice
None of the three silver faces carry org_market_id as a conformed slug column today:
mart_growth.touchpoint— noorg_market_idcolumn;organization_idis also absent at importer level (per Growth's open attribution work).mart_revenue.credit_reservation— noorg_market_idcolumn.mart_delivery.attendance— noorg_market_idcolumn.
Platform's cohort_funnel_panel compute in lib/mart/sections/portfolio.ts already
implements the spine-join path. At compute time it reads OrgMarket from Platform's
identity Prisma tables (with organization and market relations) and builds a lookup
map keyed by (organization_id, market_id) → {org_slug}-{market_slug} slug. Silver
face rows are attributed to an org_market by joining through mart_platform.person_spine
on person_id when a domain-specific key (e.g. organization_id on
mart_delivery.lesson) is available, or left null at portfolio-rollup grain when no
attribution key exists (the current state for mart_growth.touchpoint).
The slug format is {org_slug}-{market_slug} per ADR-0019. The OrgMarket spine row's
own slug field is used directly; it is pre-built in that format by Platform's identity
service and is the authoritative source.
When this changes
Platform will announce on the mart thread when any of the three silver faces adds
org_market_id as a conformed column. That announcement is the trigger for Portfolio's
compute to switch from spine-join derivation to direct column read. Portfolio does not
need to poll — the column will not appear silently.
The P3 ask (conformed slug columns on growth, revenue, and delivery silver) from
2026-05-19-platform-mart-100-percent-deployment-per-domain-asks remains open as
a Platform backlog item; it is not on the current wave.
References
- Answers:
2026-05-19-portfolio-mart-v1-2-published(open org_market_id slug question). - ADR-0019 — org_market_id slug format ({org_slug}-{market_slug}).
- Implementation:
platform/lib/mart/sections/portfolio.ts(queryCohortFunnelPanelspine-join block). - mart_platform.person_spine — the canonical person→org attribution bridge.