08-industry-alignment
Active, source-bounded alignment of a Gold dimensional design to Databricks Industry Vibe Data Models (and other canonical industry reference models — TM Forum SID, ARTS, ACORD, HL7, BIAN). Use when t
SKILL.mddata_product_accelerator/skills/gold/design-workers/08-industry-alignment/SKILL.md
GitHubIndustry Data Model Alignment (Active + Advisory)
Overview
This worker gives the Gold design an active voice for aligning to a Databricks Industry Vibe Data Model (or any canonical industry reference), instead of only grading alignment after the fact. It works in two touchpoints:
- Active (Phases 0 & 2): overlay the parsed source schema with industry entities, then steer domain assignment, conformed-dimension identification, grain/measure completeness, and Gold naming toward industry standards.
- Advisory (Phase 8): the crosswalk this worker writes is re-scored by
07-design-validationValidation 6 intoINDUSTRY_ALIGNMENT.md.
REQUIRED BACKGROUND: Read references/industry-data-model-alignment.md for the Silver-vs-Gold nuance, the manifest schema, the crosswalk states, and the scoring rubric. This SKILL.md is the behavioral companion to that reference.
The Non-Negotiable Guardrail: Extract, Don't Generate
This worker is a lens over the source schema — never a source of new tables. It upholds databricks-expert-agent's "Extract, Don't Generate" principle: the industry model informs how you model what the source contains; it must never inject entities the source lacks.
| The worker MAY | The worker MUST NOT |
|---|---|
| Map each parsed source table to an industry entity | Invent a Gold table for an industry entity with no source data |
| Flag industry-core source tables at risk of exclusion | Add columns not derivable from the source schema |
| Recommend industry-standard names for Gold objects (still built from source columns) | Rename to industry terms that misrepresent the source column's meaning |
| Recommend domain grouping, conformed dims, measures to consider | Silently auto-apply any recommendation |
Surface a coverage gap for human Waived/Planned disposition |
Fabricate the missing entity to close the gap |
A surfaced gap is resolved as Waived/Planned via SOURCE_TABLE_MAPPING.csv with a rationale — never by inventing a table. All recommendations are recorded in DESIGN_DECISIONS.md and confirmed, mirroring the orchestrator's "never silently correct a classification" rule.
When to Use / When to Skip
- Use when Phase 1 captured
industry_reference_source: vibe_generated | publishedandcontext/industry_reference.yamlexists (reduce a Vibe Silver model or a published vertical model to that manifest — see the reference doc, Mode A/B). - Skip entirely when
industry_reference_source: none. Record "industry alignment: N/A" in the intake report andDESIGN_DECISIONS.md. Skipping is never a failure — this worker is optional and vertical-specific.
Phase 0: Coverage Overlay
Run immediately after classify_tables() in orchestrator Phase 0, before any modeling, so coverage gaps are visible up front.
Use scripts/industry_overlay.py:
build_industry_overlay(classified, reference_path)— annotates each source table with its industry entity (Coveredby name/alias,Absorbedwhen attributes live in another table, orGap), prints the overlay, and returns the crosswalk seed + provisional coverage %.- Fold the printed overlay into the Schema Intake Report. Every
core/extendedGapmust get an explicit decision in Phase 1/2.
The manifest schema and matching rules live in references/industry-data-model-alignment.md.
Phase 2: Active Guidance Rules
Apply the industry reference as an active checklist during dimensional modeling. Each rule recommends and records in DESIGN_DECISIONS.md Section 8 — it never auto-applies.
| # | Guidance | Uses reference for | Recorded as |
|---|---|---|---|
| 1 | Canonical domain assignment | Map source tables to the industry's domain names so Gold domains match industry language | Domain column in the table inventory |
| 2 | Conformed-dimension identification | Industry models expose shared dims (customer/product/date); promote matched entities referenced by 2+ facts | Bus-matrix note + 04-conformed-dimensions decision |
| 3 | Grain & measure completeness | Compare the entity's core_attributes/expected measures against your fact design; flag standard measures the source can support |
Grain/measure table + rationale |
| 4 | Terminology steering | When a source table maps to an entity but is named off-standard, recommend the industry name (only if it faithfully represents the source) | Naming decision + old→new mapping |
| 5 | Gap surfacing (not filling) | For each core/extended Gap, force a Waived (out of scope) or Planned (later phase) decision |
SOURCE_TABLE_MAPPING.csv EXCLUDED/PLANNED row + rationale |
| 6 | Sensitivity alignment | Where the entity is PII, ensure the covering Gold table carries the PII tag |
table_properties.PII on the YAML (Phase 4) |
At the end of Phase 2, after gaps are dispositioned, write the crosswalk with write_crosswalk().
The Crosswalk Artifact (hand-off contract)
gold_layer_design/INDUSTRY_CROSSWALK.csv — the single artifact Validation 6 consumes. Matching is owned here; scoring/gating is owned by 07-design-validation.
| Column | Meaning |
|---|---|
entity |
Industry reference entity name |
domain |
Industry domain |
importance |
core | extended | optional |
sensitivity |
PII | none |
state |
Covered | Absorbed | Waived | Planned | Gap |
gold_tables |
Pipe-delimited Gold table(s), or empty |
rationale |
Required for Waived/Planned/Gap |
Hand-off to Validation 6
07-design-validation Validation 6 loads INDUSTRY_CROSSWALK.csv (it does not re-match): it verifies each Covered/Absorbed row's gold_tables still exist in the current YAML, re-checks PII sensitivity against table_properties.PII, scores coverage/terminology/PII per the rubric, emits INDUSTRY_ALIGNMENT.md, and stays advisory (excluded from all_valid). The _norm/IMPORTANCE_WEIGHT constants live in scripts/industry_overlay.py.
Common Mistakes
| Mistake | Why it's wrong |
|---|---|
Inventing dim_supplier to hit 100% |
Violates Extract-Don't-Generate; creates a table with no source data |
| Auto-renaming source tables to industry terms silently | Recommendations must be recorded and confirmed, not applied invisibly |
| Making coverage a hard gate | Reference is external, volatile, and a different layer; false failures result |
| Re-implementing matching in Validation 6 | Two matchers drift; the crosswalk is the single source of truth |
| Forcing normalized industry structure into Gold | Defeats the dimensional model's purpose |
Inputs
- From Phase 0: classified source table inventory (
classify_tables()output) - From Phase 1:
industry_vertical,industry_reference_source,industry_reference_path - From customer:
context/industry_reference.yaml(normalized manifest; template inassets/templates/)
Outputs
- Printed industry coverage overlay (Phase 0)
- Industry Alignment section appended to
DESIGN_DECISIONS.md(Phase 2) gold_layer_design/INDUSTRY_CROSSWALK.csv(Phase 2, consumed by Validation 6)- Terminology/domain/conformed-dim recommendations feeding Phases 2–4
Design Notes to Carry Forward
- Provisional coverage % from the Phase 0 overlay
- Every core/extended gap has a
Waived/Planneddisposition with rationale - Conformed-dim promotions and terminology renames recorded in
DESIGN_DECISIONS.mdSection 8 -
INDUSTRY_CROSSWALK.csvwritten and ready for Validation 6
Next Step
Continue Phase 2 dimensional modeling with the industry-informed decisions, then proceed through Phases 3–7. At Phase 8, 07-design-validation Validation 6 consumes the crosswalk and emits INDUSTRY_ALIGNMENT.md.
Reference Files
- Industry Data Model Alignment — manifest schema, Silver-vs-Gold nuance, crosswalk states, scoring rubric, report template
- Overlay script:
scripts/industry_overlay.py— matching, overlay, crosswalk writer - Manifest template:
assets/templates/industry_reference.template.yaml
Related Skills
design-workers/07-design-validation— Validation 6 (consumes the crosswalk)design-workers/04-conformed-dimensions— conformed-dimension patterns (guidance rule 2)common/naming-tagging-standards— snake_case, tags (layer/domain/PII), dual-purpose descriptions