Skip to main content

What Foundational Detects - Issue Detection Catalog

Introduction

This article describes what Foundational detects across your code and data pipelines, grouped into meaningful categories. Each detection includes a description and a severity level.

Foundational continuously scans your code and data pipelines across platforms such as dbt, Airflow, Snowflake, BigQuery, Redshift, Databricks, Spark, Looker, Power BI, Tableau, and many more. It builds a unified, column-level lineage graph of how data flows between tables, columns, dashboards, and jobs. Foundational analyzes the graph on every pull request and catches problems before they reach production.

The exact set of detections enabled for your organization, and their thresholds, can vary. Contact your Foundational representative to review or adjust your configuration.


How detection works

Foundational detects issues at three points:

  1. On a pull request (pre-merge): Foundational compares the lineage graph as it exists today against how it would look after your change, and flags anything the change would break or degrade. This is where breaking changes are caught.

  2. Continuously (post-merge / scheduled): Data observability monitors run against your warehouses to catch freshness, volume, and data quality problems as they happen.

  3. At scan time: Parsing and compilation checks confirm Foundational can fully understand each project, so lineage stays complete and trustworthy.

Every detection is configurable per organization. You can tune individual checks, scope them to specific platforms, or disable them to match your team's workflow.


Severity levels

Severity

Meaning

Critical

A project could not be compiled or understood. Lineage for the affected asset may be incomplete until you resolve it.

Error

A change or condition will break a downstream consumer or produce incorrect results.

Warning

A likely problem or risky change that warrants review. It may be intentional.

Information

A suggestion or best-practice gap with no immediate impact.


What is a breaking change?

A breaking change is a code change that removes or alters a table or column that other assets still depend on. It leaves a downstream query, model, dashboard, or job pointing at data that no longer exists or no longer matches.

Foundational detects breaking changes by diffing the lineage graph. Because that graph is unified across platforms and resolved down to the individual column, Foundational catches a change no matter how many transformations or platform hops separate it from the asset it affects.

For example, Foundational flags a column dropped in a dbt model even when the dependent asset is a downstream Snowflake view, a Looker explore, a Power BI dashboard, or an Airflow job.


Breaking Schema Changes

Forward-looking checks run on every pull request and pinpoint exactly which downstream assets a change would break, across every connected platform, down to the individual column.

Detection

Severity

What it means

Removed table still in use

Error

A change deletes a table that downstream models, queries, dashboards, or jobs still read from. Foundational names every consumer that would break.

Renamed table still in use

Error

A change renames a table, but downstream assets still reference it by its old name and will break.

Removed column still in use

Error

A change deletes a column that is still consumed downstream. Foundational catches this at the individual-column level, even when the column is read many steps away from where it was removed.

Renamed column still in use

Error

A change renames a column, but downstream assets still read it by its old name and will break.

Column type change

Warning

A column's data type changes in a way that can break or silently corrupt the downstream consumers that read it. For example, a numeric column becomes a string.

Breaking change reaching BI and operational tools

Error

A change in one system breaks an asset in a different one: a Power BI, Looker, or Tableau dashboard, a reverse-ETL sync, or a Spark or Airflow job. Single-tool checks cannot see these cross-platform breaks.

Reference to a non-existent table

Error

A model, query, or dashboard references a table that does not exist in any connected source. This points to a typo, an object that was dropped, or a source that was never created.

Reference to a non-existent column

Error

An asset reads a column that does not exist on its source table, so the query fails or silently returns no data.


SQL correctness and semantics

Foundational statically analyzes SQL across every dialect in your stack and surfaces correctness and semantic problems before the SQL ever runs.

Detection

Severity

What it means

SQL Syntax Error

Error

SQL that is grammatically malformed and will fail to parse or compile.

SQL Type / Cast Error

Error

SQL that parses correctly but contains an invalid type conversion. This includes casting a value to a type it cannot become, or forming an invalid timestamp or temporal expression, either of which fails at runtime or silently corrupts results.

Unresolved Reference

Warning

A query references a table, column, or schema that cannot be resolved in its context, indicating a likely broken or out-of-date reference.

SQL Column Ambiguity

Error

A column reference is ambiguous across joined tables, so the engine may resolve it to the wrong source and return unexpected values.

Union Size Mismatch

Warning

The branches of a UNION return different numbers of columns, which fails or misaligns the combined result.

Union Names Mismatch

Warning

The branches of a UNION carry mismatched column names, risking mislabeled output downstream.

Unhandled Enum (non-exhaustive CASE)

Warning

A CASE expression does not cover all known values of its input, leaving unhandled values to fall through unexpectedly.

dbt Enum Mismatch

Warning

A column's data contains values outside the set declared as accepted for it.

Duplicate Definition

Warning

The same table or entity is defined in more than one place, creating ambiguity about the source of truth.


Metadata & Governance

Detection

Severity

What it means

Missing Description

Warning

A table or column has no description, reducing discoverability and governance coverage.

Missing Enum Test

Information

A column expected to be validated against an enumerated set has no such test or validation.


Data Observability & Quality

Continuous monitors watch your data after it lands, catching freshness and anomaly problems automatically.

Detection

Severity

What it means

Freshness

Warning

A table has not been updated within its expected time window.

Row Count Freshness

Warning

A table's row count has not changed when new data was expected.

Volume Anomaly

Warning

An unusual spike, drop, or zero in the volume of data written.

Row Count Threshold Violation

Warning

A table's row count fell outside its expected range.

Count Threshold Violation

Warning

A monitored value count fell outside its configured threshold.

Value Count Anomaly

Warning

The distribution of values in a column deviated from what is expected.

Value Rate Anomaly

Warning

The rate of unexpected or invalid values in a column is too high.

Monitor Failure

Warning

A monitoring query failed to execute.

Monitored Entity Missing

Error

A table that is under active monitoring no longer exists.

Did this answer your question?