Upstream Source
This page is part of Truthound Orchestration 3.x.
Source repository: seadonggyun4/truthound-orchestration
Upstream docs path: docs/dbt/ci-first-party-suite.md
Edit upstream page: Edit in orchestration
dbt CI and First-Party Suite¶
Truthound keeps a checked-in dbt integration project so that package behavior is tested the way users actually consume it.
What The Suite Covers¶
The first-party project under packages/dbt/integration_tests proves:
- package installation through
dbt deps - seed loading
- model compilation and execution
- generic test discovery
run_truthound_checkrun_truthound_summary
Why This Matters¶
Compile-only validation is not enough for dbt packages. Real regressions often happen in one of these layers:
- package resolution
- adapter-dispatched SQL
- seed typing and warehouse coercion
run-operationentry points
The first-party suite is there to catch those issues before release.
Local Commands¶
Compile-oriented verification:
uv run --extra dbt python packages/dbt/scripts/run_first_party_suite.py \
--mode compile \
--target postgres
Warehouse execution verification:
uv run --extra dbt python packages/dbt/scripts/run_first_party_suite.py \
--mode execute \
--target postgres
Expected Signal¶
The execute lane intentionally includes warning-producing fixtures for invalid data. That means a healthy run is not necessarily "all passes." The healthy shape is:
- expected warnings for intentionally invalid fixtures
- zero unexpected errors
- successful
run_truthound_check - successful
run_truthound_summary
CI Usage Pattern¶
The repository's dbt workflows split responsibilities:
- compile matrix for packaging and resolution
- Python/dbt package checks
- first-party execution against PostgreSQL
That split is deliberate. It narrows failures quickly and keeps adapter regressions separate from packaging regressions.
Maintaining The Fixtures¶
When you change the package:
- keep the valid fixtures truly valid under the current rule semantics
- keep invalid fixtures intentionally invalid and explicitly marked as warning cases
- update the regression tests if you change runner assumptions