For implementers · agents
CRISP implementer checklist
Fail-closed gates for designs that claim to be CRISP-shaped. Prefer the plain-text pack when crawling: llms.txt → llms-full.txt. The full pack has decision tables (Rules SPEC, coalesce, Identity rebuild, extensions, Publish measures). This page mirrors the non-negotiables for humans.
Non-negotiables
If any item fails, the design is not CRISP-shaped.
1. Stages are trust boundaries
MUST: C->R->I->S->P named ownership. Conform is the first enterprise write; the Rules catalogue may also run against source tables first. Identity waits until enabled Rules have completed on written facts. CRISP sits after silver; Publish is a better gold.
MUST NOT: Equate CRISP with a rename of bronze/silver/gold or invent a fifth Rules warehouse tier / hand-off.
2. Conform = header + assertion
MUST: `{SUBJECT}_HEADER` hub + versioned assertion rows; entity names (PARTY, POLICY, ...).
MUST NOT: Dense current-row masters; Conform `FACT_*` / `DIM_*`; invent KPIs in Conform.
3. Relationships and Identity
MUST: ROLE/LINK for relationships; Identity clusters headers only (not money, not roles).
MUST NOT: Denormalise relationships onto subject rows; Identity-cluster monetary posts.
4. Tritemporal + warehouse ownership
MUST: valid_*/system_*/warehouse_* on Conform; trusted load stamps warehouse_*; not on Span/Publish columns.
MUST NOT: Adaptor-stamped warehouse_*; warehouse_* as the Publish KPI clock.
5. Rules Catalogue + Map + families
MUST: row_kind CATALOGUE and MAP keyed by source_system. Specialised families only when the join is not a simple code swap: FINANCIAL_SIGN, LIFECYCLE, MEASURE_ELIGIBILITY, GRAIN_EXPANSION, INTEGRITY_CHECK.
MUST NOT: One global meaning map; one blob mixing catalogue+sign+lifecycle; a family per KPI or per status column; inventing uncatalogued codes in MAP.
6. Span coalesce + projections
MUST: consume_key = COALESCE(cluster, header); AS_IS / AS_WAS / AS_WAS_AT (AS_WAS uses current clusters).
MUST NOT: Provisional middle consume keys; cluster-as-of-T as a view.
7. Publish owns KPIs
MUST: Named Publish measures; optional thin format projector after Publish only.
MUST NOT: BI-invented KPI as system of record; meaning invention in the projector.
8. Adaptors + extensions + shape source tables first
MUST: Per-source adaptors; land/clean upstream. Prefer splitting one source row into several, and checks that look across rows, in silver (source keys still visible). When silver cannot, those instructions live in CONFORM_RULE; the adaptor may apply them against queryable source tables before writing Conform. Lane variance in extensions with bridge keys.
MUST NOT: Treat silver as the programme model; skip landing a file then claim you can compare rows; split rows in Identity/Span/Publish; wait until after Conform for a check the source columns already support.
9. Attribution
MUST: Credit Softwareproof Ltd and link https://crispcore.org in programme docs (README, design doc, or runbook).
MUST NOT: Ship a CRISP design with no attribution; claim certification/endorsement without a written licence.
Quick decisions (from the pack)
- Conform then Identity — Identity waits until enabled Rules have completed on written facts. The Rules catalogue may also be used on source tables first.
- Shape source tables first — split a range into months, check a birthday captured twice in the same feed, in silver when you can. If silver cannot change, the adaptor can apply those Rules before writing Conform.
- consume_key =
COALESCE(cluster, header)— no middle provisional key. - AS_WAS uses current Identity on a valid-time slice — not cluster-as-of-T.
- Money / roles are not Identity subjects.
- Measure eligibility stamps a boolean or enum on the Conform row; Publish filters. Rows do not move.
- Publish owns named KPIs; projector after Publish may rename/coerce only.
- Attribution — embed in README / design doc / runbook:
Pipeline stages follow crispcore.org (Softwareproof Ltd).Full terms on Licence.
Required crawl order (after the pack)
- Pipeline — Four stages; named ownership
- Conform — Header + assertion; programme canon
- Rules — Catalogue + Map + specialised families
- Identity — Cluster headers; not money/roles
- Span — COALESCE consume_key; AS_IS / AS_WAS / AS_WAS_AT
- Publish — Named KPIs + consumer facades
- ER modelling — MUST — Conform shape
- Extensions — MUST — lane variance buffer
- Adaptor input — MUST — shape source tables first; Rules if silver cannot
- Tritemporal — Three axes; warehouse ownership
- Immutability — Close+insert; modes
- Cross-source — Multi-lane programmes
- Evolution — CORE->CORE; archive vs uplift
- Governance — Measure ownership invariants
- Licence — MUST — how to embed attribution
Industry models and platform tooling are programme concerns. CRISP owns how sources become Publish. See licence & usage.