-
-
Confirm the exact DataHub field before impact analysis or code generation can begin.
-
The cited graph reveals 11 hidden downstream and governed assets, each with a concrete URN.
-
Deterministic policy blocks the direct rename because an owner is missing and compatibility is required.
-
Frozen evaluation: 100% cited recall, zero invented assets, and safe abstention on incomplete metadata.
-
Exact GitHub and DataHub payloads are visible, while external writes remain locked without approval.
-
The safe expand patch preserves the old field, adds the new alias, and passes all dbt validators.
-
The responsive evaluation view keeps measured evidence and honest limits readable on mobile.
ChangeGraph
Inspiration
A column rename can look harmless inside one repository and still break the dashboard, query, model, or contract that lives somewhere else. Source search cannot see the whole data estate, and a confident code generator can turn that blind spot into a production incident.
ChangeGraph starts with a different rule: metadata evidence comes before code. It uses DataHub context to identify the exact field, traverse its cited impact graph, and expose the owners, policies, assertions, dashboards, queries, and ownerless consumers that a repository-only review misses.
What it does
For the demo request, "rename warehouse.orders.total to gross_total,"
ChangeGraph:
- confirms the exact DataHub URN;
- discovers 11 downstream or governed synthetic assets with evidence IDs;
- blocks a direct rename using deterministic rules;
- creates an expand-migrate-observe-contract plan;
- generates only the additive expand phase, keeping
totaland addinggross_totalas an alias; - validates citations, allowed files, destructive SQL, and the dbt project; and
- previews the draft PR and DataHub decision payloads without writing either one before entrant approval.
The human impact is review clarity. A data engineer can see who needs to act, which unknowns still block the change, and what can safely happen first instead of discovering hidden consumers after deployment.
How DataHub is used
The repository includes a real local DataHub Core path. The official Python SDK seeds synthetic schema and lineage, GraphQL verifies a structured read, and the official MCP server is probed for search, lineage, and schema tools with mutation tools disabled. The resettable browser demo uses a labeled fixture replay of that synthetic graph; it never presents the fixture as a production catalog.
How we built it
TypeScript, Zod, React, Vite, Playwright, Vitest, DataHub Core, the official DataHub Python SDK and MCP server, dbt-postgres, Postgres 16, and an independently validated Apache-2.0 Agent Skill.
Measured evidence
The ten-case frozen synthetic evaluation compares ChangeGraph with a schema-only baseline. The release gates require zero invented assets, full citation coverage for metadata-derived claims, successful safe-patch validation, and abstention for stale or incomplete metadata.
Challenges
The hardest boundary was separating real integration proof from a portable demo. A local DataHub stack can prove the SDK, API, and MCP path, but a public judge should not need credentials. The solution is explicit dual evidence: live local probes recorded separately, and a persistent fixture-replay label in the resettable UI.
We also resisted making the approval step theatrical. The project can show exact write payloads, but no agent-created click is represented as a human approval.
Honest limits
- The public graph is synthetic and does not prove production coverage.
- DataHub metadata can be stale, incomplete, or permission-limited.
- Lineage indicates dependency, not runtime criticality.
- The MVP targets a bounded dbt/Postgres rename workflow.
- No draft PR or DataHub decision write has been executed because the required separate entrant approval is not recorded.
- The project does not claim incident prevention.
What's next
With entrant approval, the exact previewed draft PR and idempotent DataHub decision record can be exercised against scoped credentials. A public deployment and a clean logged-out run remain the final delivery checks.
Built With
- datahub
- dbt
- graphql
- mcp
- playwright
- postgresql
- python
- react
- typescript
- vite
- vitest
- zod
Log in or sign up for Devpost to join the conversation.