jwlai-cloud/Downstream Impact Guardian
On every dbt PR: detects breaking schema/logic/semantic changes, assesses real cross-system blast radius via DataHub lineage, proposes a Data Contract back into DataHub, and posts a PR comment with mergeable compatibility code. Runs entirely on the Action runner — no hosting.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Stale
- License
- None
Inputs
| name | description | required | default |
|---|---|---|---|
| dbt-project-dir | Path to the dbt project in your repo | yes | — |
| prod-manifest | Last-known-production manifest.json. Default: <dbt-project-dir>/prod_state/manifest.json | — | "" |
| glossary-file | DataHub business glossary yml tracked in your repo. Default: <dbt-project-dir>/datahub/business_glossary.yml | — | "" |
| pr-number | Pull request number | — | ${{ github.event.pull_request.number }} |
| datahub-url | DataHub GMS URL. Empty = offline fixture mode. | — | "" |
| datahub-token | DataHub access token (required if GMS auth is enabled) | — | "" |
| google-api-key | Gemini API key for the ADK narrative agent (optional) | — | "" |
| narrative-model | Narrative LLM. Default gemini-flash-latest; any LiteLLM id works (e.g. openai/gpt-4o-mini, or openai/<model> against an OpenAI-compatible endpoint via openai-base-url). | — | "" |
| openai-api-key | OpenAI-compatible API key (alternative to google-api-key) | — | "" |
| openai-base-url | OpenAI-compatible base URL (e.g. Qwen/DashScope compat mode) | — | "" |
| slack-webhook-url | Slack incoming webhook — one summary message on HIGH/CRITICAL | — | "" |
| github-token | Token used to post the PR comment | — | ${{ github.token }} |
| dbt-adapter | dbt adapter package to install | — | dbt-bigquery |
| datahub-platform | Warehouse platform in your DataHub urns | — | bigquery |
| warehouse-project | Warehouse project/database in your DataHub urns (GCP_PROJECT) | — | "" |
| warehouse-dataset | Warehouse dataset/schema in your DataHub urns (BQ_DATASET) | — | "" |
| output-dir | Where generated artifacts are written | — | .dig_output |
| strict | Fail the check on HIGH/CRITICAL severity ("true"/"false") | — | false |
Outputs
no outputs