Stage P
Publish
SP_CORE_PUBLISH
Publish is the consumer facade of KPIs, readable at any point in time. Tableau, Power BI, REST APIs, and regulatory packs are peer consumers on one contract. Rules and Identity logic are not re-encoded here — Span projects; Publish names.
Highlighted: Publish is the consumer KPI facade at any point in time.
Consumer synonyms — SP_CORE.*
Day-to-day SQL and BI usually bind to short names under SP_CORE. Those are synonyms for the Publish AS_IS facade — not a second truth store.
SP_CORE.PARTY→SP_CORE_PUBLISH.PARTYas-is- Same pattern for other published subjects (
SP_CORE.{SUBJECT}→ Publish AS_IS) - Point-in-time reads still use the explicit Publish / Span families (
*_AS_WAS,*_AS_WAS_AT) — synonyms are the everyday as-is path
-- Synonym for SP_CORE_PUBLISH.PARTY AS_IS
SELECT consume_party_key, name, party_kind
FROM SP_CORE.PARTY
WHERE name = 'Northbridge Marine Ltd';
-- → one winner facade row (not two Conform natives)Three contracts — KPIs, facades, point-in-time
Split by what the consumer binds to, not by tool. Measures and entity names stay stable across AS_IS, AS_WAS, and AS_WAS_AT.
KPI · Governed measures
Governed measures
PUBLISH.{MEASURE_NAME}
Where is the named enterprise number defined?
Stable measure contracts (GWP, top brokers, …). BI and APIs read these — not workbook calculated fields.
GWP_BY_CONSUME_PARTY
Eligibility from Rules; Span projects; Publish names the contract once.
FACADE · Entity entry points
Entity entry points
PUBLISH.{SUBJECT} / {SUBJECT}_ROW
What stable names do tools bind to?
Thin facades over Span — collapsed subject or native grain. Naming stability is the trust boundary. Everyday SQL often uses SP_CORE.{SUBJECT} as a synonym for the Publish AS_IS facade.
SP_CORE.PARTY ≡ PUBLISH.PARTY AS_IS
No new Rules or Identity logic — rename and package only.
TIME · At any point in time
At any point in time
PUBLISH.*_AS_IS · *_AS_WAS · *_AS_WAS_AT
Can every consumer ask now, restated, or audit?
Same KPI and entity names in every temporal mode — Publish exposes Span’s trilogy as the consumer API.
POLICY_AS_WAS(ts) · GWP as-of close
Point-in-time is a Publish contract; the projection engine remains Span.
No new Rules. Naming stability is the trust boundary. Relationship views keep Conform relationship grain with consume_* keys attached. Worked cross-source example: Cross-source.
Pseudocode
# Thin rename / package over Span — same names in every temporal mode
PUBLISH.PARTY_AS_IS = SPAN.PARTY_AS_IS
PUBLISH.PARTY_ROW_AS_IS = SPAN.PARTY_ROW_AS_IS
PUBLISH.PARTY_AS_WAS(t) = SPAN.PARTY_AS_WAS(t)
PUBLISH.PARTY_AS_WAS_AT(a,b) = SPAN.PARTY_AS_WAS_AT(a,b)
# Everyday synonym (schema SP_CORE) → Publish AS_IS facade
SP_CORE.PARTY ≡ SP_CORE_PUBLISH.PARTY_AS_IS # or PUBLISH.PARTY AS_IS view
# Governed KPI — defined once; queryable at any point in time via Span families
CREATE VIEW SP_CORE_PUBLISH.GWP_BY_CONSUME_PARTY AS
SELECT
consume_party_key,
SUM(gwp_eligible_amount) AS gwp
FROM SPAN.policy_premium_facts
JOIN IDENTITY using consume keys
WHERE gwp_eligibility_flags_from_rules
GROUP BY consume_party_key
# Consumers — Tableau / Power BI / REST / SQL
assert tableau_datasource.targets ⊆ { SP_CORE.*, SP_CORE_PUBLISH.* }
assert rest_api.entities ⊆ SP_CORE_PUBLISH
assert sql_as_is_reads use SP_CORE.{SUBJECT} # synonym path
# Forbidden: redefine GWP in workbook calculated fieldsRelated: governance principle.