Inspiration
A producer's tests can be green while a column rename breaks Finance dashboards, Growth models, Support workflows, and ML features. The missing information is not inside the producer repository: it is distributed across lineage, query history, ownership, domains, and column-level dependencies. DataHub already contains that organizational graph. ChangeSafe makes it executable at change-review time.
What it does
ChangeSafe reads a shared dataset, its schema, downstream lineage, column-level paths, and query examples through DataHub MCP. It builds an evidence-backed dependency contract, scores cross-team convergence, and pressure-tests a proposed rename, removal, or type change. It then identifies known affected consumers, reports unknown coverage, generates compatibility SQL and regression SQL, creates a four-file review package, applies that package as a real Git branch and commit, and records the reviewed decision back in DataHub.
How we built it
- FastAPI serves a compact browser workflow and a deterministic analysis engine.
- DataHub MCP provides entity, schema, lineage, query, and document operations via the official read tools
get_entities,list_schema_fields,get_lineage,get_dataset_queries, plussave_documentfor write-back. - A local dbt-shaped SQLite fixture proves the break and the generated repair without a paid warehouse or API.
- A public GitHub Actions workflow boots DataHub OSS 1.7.0 and the official MCP server, ingests DataHub's sample metadata, exercises column lineage, saves the decision, and reads the saved document back.
- Generated changes are reviewable SQL and Markdown; an LLM is never trusted to decide whether a change is safe.
Challenges we ran into
The largest challenge was preserving evidence boundaries. Lineage and query history can show known consumers but cannot prove complete coverage, so the UI always carries an explicit unknown-coverage warning. We also found multiple valid response wrappers in the official MCP server, and added contract tests plus a live durability check instead of masking those differences. Finally, DataHub Quickstart needs 8 GB+ of Docker memory, so live verification was moved to a 16 GB hosted runner rather than being faked locally.
Accomplishments that we're proud of
- A real rename breaks four downstream SQL consumers; the generated compatibility layer repairs all four with zero mismatches.
- The live workflow loads actual DataHub OSS metadata and traces
logging_events.event_datatofct_users_created.user_name. - The product generates executable migration and regression SQL, a machine-readable impact file, an owner-facing migration note, and a real Git commit.
- The reviewed decision is persisted through
save_documentand verified by reading its URN back through DataHub MCP.
What we learned
The valuable primitive is not another catalog chat interface. It is translating organizational metadata into a bounded, observable action while stating plainly what the metadata cannot prove. That same primitive can later power incident response, training-serving parity, and deletion planning.
What's next for Luca
A CI check that receives a proposed schema diff directly from a pull request, maps it to DataHub URNs, posts the impact summary on the PR, and opens the generated compatibility patch for human approval.
Built With
- datahub
- fastapi
- git
- github
- javascript
- mcp
- pytest
- python
- sqlite
Log in or sign up for Devpost to join the conversation.