CRISPcore

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.

Where Publish sits in CRISP
Rendering diagram…

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.

Everyday consumer SQL
-- 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

Facades, synonyms, and governed measures
# 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 fields

Related: governance principle.