Severity Rules
April 26, 2026 ยท View on GitHub
dbt-semguard maps semantic changes into three severities.
Breaking
These fail semguard check by default.
semantic_model.removedsemantic_model.model_changedmetric.owner_model_changedentity.removedentity.type_changedentity.expr_changeddimension.removeddimension.type_changeddimension.expr_changeddimension.granularity_changedwhen the new grain is coarser and loses detail, including sub-day grains such ashourtodaymeasure.removedmeasure.agg_changedmeasure.expr_changedmeasure.non_additive_dimension_changedmetric.removedmetric.type_changedmetric.simple.agg_changedmetric.simple.expr_changedmetric.simple.non_additive_dimension_changedmetric.ratio.numerator_changedmetric.ratio.denominator_changedmetric.derived.inputs_changedmetric.derived.expr_changedmetric.cumulative.input_metric_changedmetric.cumulative.period_agg_changedmetric.conversion.entity_changedmetric.conversion.calculation_changedmetric.conversion.base_metric_changedmetric.conversion.conversion_metric_changed
Risky
These warn by default and become blocking only if --fail-on risky or --fail-on safe is used.
semantic_model.addedsemantic_model.agg_time_dimension_changedentity.addeddimension.addeddimension.granularity_changedwhen the new grain is finer or unknownmeasure.addedmeasure.agg_time_dimension_changedmetric.addedmetric.filter_changedfor semantic SQL filter edits, including case-sensitive literal changes and quote changesmetric.label_changedmetric.agg_time_dimension_changedmetric.cumulative.window_changedmetric.cumulative.grain_to_date_changedmetric.conversion.constant_properties_changed
Safe
Safe changes do not appear in the semantic diff.
- Description-only edits
- Docs text changes
- YAML reordering
- Whitespace or comment changes
- Insignificant SQL filter spacing around comparison operators
Defaults
- Default threshold:
--fail-on breaking - Optional repo-level include/exclude config is supported through
.semguard.yml - Rename inference is intentionally conservative and treated as a removal plus an addition
sourcediagnostics and identity fields such as object names are intentionally excluded from semantic equality