SQL-change assessments
Last updated 6 September 2026
Base versus PR manifests
GitHub CI compiles the PR with dbt build and compiles the pull-request base into target-base/manifest.json plus compiled SQL. Frontier then compares those artifacts:
frontier inspect --manifest-file target/frontier-manifest.json --base-manifest target-base/manifest.json
frontier compare --manifest-file target/frontier-manifest.json --base-manifest target-base/manifest.json
frontier prove --target ci --manifest-file target/frontier-manifest.json --base-manifest target-base/manifest.jsonfrontier compare requires --base-manifest.frontier prove is the customer CI assessment command. frontier run executes frontier and validation queries; it is not equivalent to prove and is not what the generated workflow runs.
Filter-change example
A supported filter widening. Base keeps closed orders only; the PR also includes status O:
-- Base
where order_status = 'F'
-- PR
where order_status in ('F', 'O')Frontier classifies FILTER_CHANGED, compiles a candidate-key query for orders whose predicate result changed, routes those orders to customer IDs through the semantic manifest, and validates only those customer summaries against a full reference. A successful targeted proof is evidence for the tested data, not a universal mathematical proof.
Change kinds and rebuild decisions
| Kind | Meaning |
|---|---|
FILTER_CHANGED | Supported WHERE/predicate change. Can compile candidate SQL. |
EXPRESSION_CHANGED, AGGREGATE_CHANGED, JOIN_CHANGED | Supported semantic diffs that can compile candidate SQL. |
SOURCE_CHANGED | Upstream relation change. Full rebuild required. |
GROUPING_CHANGED, GRAIN_POSSIBLY_CHANGED, WINDOW_CHANGED, UNSUPPORTED | Unsafe or unclassified SQL. Full rebuild required. |
| Added / removed models | Listed on the comparison. Added and removed models do not get a targeted candidate set. |
COMPILED— candidate SQL was produced.EXECUTED— that SQL ran in Snowflake.FULL_REBUILD_REQUIRED— unsafe/unsupported change, or candidate SQL could not cover the diff. Targeted proof is skipped. Fail closed.FULL_REBUILD_RECOMMENDED— a targeted proof is possible but the candidate set is large enough that a full rebuild is cheaper. This is an efficiency warning, not a correctness failure by itself.
Candidates versus confirmed changes
- Candidate frontier — entities that might be stale. Conservative; can include no-ops.
- Confirmed frontier — candidate entities whose mart output actually changed between base and head.
- Candidate no-op — selected conservatively, but the mart row did not change. Efficiency, not a missed bug.
- Missed entity — the full reference changed a business entity that the candidate set did not include. Correctness problem.
- Rows avoided — share of the full entity population not recomputed. An efficiency metric.
Evidence empirically validated means the targeted repair matched the full reference on this run's data. It is not a formal proof for every future dataset.
FRONTIER_BLOCKING
Upload always stores the assessment when the HTTP ingest succeeds. FRONTIER_BLOCKING=true or frontier upload --blocking then exits 1 if the assessment status is failed. The generated first workflow uses false unless you pass frontier setup github --blocking.