Field-level specification for SMEbit YAML definitions (smebits/smebit_*.yaml).
Location: smebits/smebit_*.yaml
smebit_id must match the filename stem (e.g. smebit_foo.yaml requires smebit_id: smebit_foo)
Validator: python3 scripts/smebitcheck.py
Compiler: python3 scripts/smebitcompile.py
Level Name Has check block? Produces dbt model? Description 0 Observation No Registry only Standalone knowledge — no SQL, no verdict 1 Check Yes Verdict model Testable assertion compiled to SQL, produces confirmed/violated/no_data
Level is implicit: if the check block is present, it is Level 1. Otherwise Level 0.
Field Type Required Description smebit_idstring Yes Must match filename stem versionstring Yes Semver (e.g. "1.0.0") created_atstring Warning ISO date ("2026-03-17"). Validator warns if missing modified_atstring No ISO date. Updated on change providermapping Yes See Provider scopemapping Yes See Scope categorystring Yes See Valid Categories tagslist of strings No Free-form tags for discoverability subjecti18n mapping Yes One-line summary (en/de/fr required) contenti18n mapping Yes Full explanation (en/de/fr required) whyi18n mapping Warning Reason behind the observation (en/de/fr). Validator warns if missing but does not block statusstring Yes See Valid Statuses superseded_bystring Conditional Required when status: superseded. Must reference an existing smebit_id anchorslist No See Anchors checkmapping No Presence makes this Level 1. See Check Block prescriptionmapping No See Prescription Block
All i18n fields are mappings with keys en, de, fr (all three required).
Field Type Required Description namestring Yes Person or team name rolestring Yes Role or title datedate Yes Date of contribution (YYYY-MM-DD)
Field Type Required Description tenant_idstring or null No Tenant this applies to. null = cross-tenant source_systemstring No Source system constraint time_rangemapping No from and until (dates or null)
Category What it covers data_qualityIncorrect or inconsistent values in source data mappingWrong or outdated relationships between entities business_ruleKnown exceptions to standard patterns processHow the organization actually works (workarounds, manual steps) systemKnown IT system limitations or behaviors seasonalTime-based patterns the SME knows about historicalPast events that explain current data patterns structuralSchema or modeling insights
Status Description activeCurrent, in effect supersededReplaced by another SMEbit (requires superseded_by) contestedUnder dispute or review archivedNo longer relevant
Optional list of cross-references. Each entry must have at least one non-null field.
Field Type Required Description probe_idstring No Must reference an existing probes/*.yaml hypothesis_idstring No Must reference an existing hypotheses/*.yaml entity_typestring No Gold contract entity type notestring No Free-text explanation of the link
Present only on Level 1 SMEbits. Defines a testable SQL assertion.
Field Type Required Description descriptioni18n mapping Yes What the check verifies (at least en required) entity_typestring Yes Gold contract entity type querystring Yes SQL query using {{ ref('...') }} to reference dbt models expectstring Yes confirmed or violated
The query can {{ ref() }} any layer (Bronze, Silver, Gold, signals). The verdict is confirmed if the query returns rows and expect: confirmed, or violated if it returns rows and expect: violated. no_data if the query returns no rows.
Optional. Recommends a corrective action.
Field Type Required Description typestring Yes See Prescription Types target_entitystring Yes Entity to modify target_fieldstring Yes Field to modify descriptioni18n mapping Yes What should be done (at least en required) statusstring Yes proposed, accepted, or implemented
normalize_format, decompose_key, add_dimension, add_validation, reclassify, correct_mapping, redefine_grain, fix_ingestion
smebit_id : smebit_shanghai_customs_48h
modified_at : " 2026-03-17 "
name : Trade Compliance Team
tags : [ customs , shanghai ]
en : " Shanghai port holds containers for 48h minimum inspection for certain HS categories "
de : " Der Hafen Shanghai haelt Container fuer bestimmte HS-Kategorien mindestens 48h zurueck "
fr : " Le port de Shanghai retient les conteneurs pour une inspection minimale de 48h "
en : " Chinese customs regulation for high-value and controlled goods categories. "
de : " Chinesische Zollvorschrift fuer hochwertige und kontrollierte Warenkategorien. "
fr : " Reglementation douaniere chinoise pour les marchandises de haute valeur. "
Electronics (HS 84-85) and pharmaceutical products (HS 30) entering
through Shanghai Yangshan port are subject to mandatory 48-hour
inspection holds. This is a regulatory requirement, not a processing
Elektronik (HS 84-85) und pharmazeutische Produkte (HS 30), die ueber
den Hafen Shanghai Yangshan eingefuehrt werden, unterliegen einer
obligatorischen 48-Stunden-Inspektionssperre.
Les produits electroniques (SH 84-85) et pharmaceutiques (SH 30)
entrant par le port de Shanghai Yangshan sont soumis a une retenue
d'inspection obligatoire de 48 heures.
- probe_id : probe_dwell_time_anomaly
note : " 48h hold is regulatory, not anomalous "
smebit_id : smebit_acme_item_638876a_wrong_description
modified_at : " 2026-03-10 "
name : Materials Management
tags : [ item , description ]
en : " Item 638876a has wrong description in master data "
de : " Artikel 638876a hat falsche Beschreibung in Stammdaten "
fr : " L'article 638876a a une mauvaise description dans les donnees de base "
en : " Data entry error during initial catalogue import. "
de : " Dateneingabefehler beim initialen Katalogimport. "
fr : " Erreur de saisie lors de l'import initial du catalogue. "
Item 638876a is labelled "Widget A" but actually
refers to Widget B. The description was swapped with item
638876b during the 2024 catalogue migration.
Artikel 638876a ist als "Widget A" beschriftet,
bezieht sich aber tatsaechlich auf Widget B.
L'article 638876a est libelle "Widget A" mais
designe en realite Widget B.
en : " Verify item 638876a still has wrong description "
de : " Pruefen ob Artikel 638876a noch falsche Beschreibung hat "
fr : " Verifier que l'article 638876a a encore la mauvaise description "
SELECT material_id, description
FROM {{ ref('gold_materials') }}
WHERE material_id = '638876a'
AND description ILIKE '%widget a%'
target_field : description
en : " Update description from 'Widget A' to 'Widget B' "
de : " Beschreibung von 'Widget A' zu 'Widget B' aendern "
fr : " Mettre a jour la description de 'Widget A' a 'Widget B' "
- probe_id : probe_catalogue_accuracy
note : " This item will appear as a catalogue mismatch "