Inspiration
Similar sense of questions I find during brainstorming. what if every data check is green, but the model is still making different decisions? This can happen when an upstream change preserves the column name and type but changes the values or meaning the model relies on. Understanding the consequences usually means tracing dependencies, finding the affected model, recreating the change safely, measuring its impact, and documenting evidence across disconnected tools. I built Provenance to turn that response into one continuous workflow: use DataHub to discover what depends on the changing data and test the model’s behavior before the change reaches production.
What it does

Provenance is a pre-deployment impact-testing agent for production ML data changes. It analyse and automate whether a proposed upstream data change will silently damage a downstream machine learning model before the change reaches production. Provenance sits between the data change proposal and production deployment.
In hackathon environment, Provenance received a change signal from a production grade mimicing agent simulation then performs behavioral impact analysis on a downstream ML model, supported by dependency and governance analysis. It covers four layers:
| Layer | Description |
|---|---|
| Dependency impact | If this upstream field changes, which production model can be affected? |
| Model behavioral impact | Does the model behave differently or become less reliable because of this upstream condition? |
| Operational safety decision | Deterministic policy thresholds classify the measured impact: PASS, WARNING, BLOCK |
| Governance and durable evidence | DataHub dependency discovery + counterfactual model testing + deterministic risk policy + evidence write-back |
- Reads the source entity, selected field, ownership, tags, and downstream lineage through the official DataHub MCP Server.
- Discovers the affected ML feature and production model from DataHub context rather than requiring the caller to name a model.
- Builds a bounded experiment from an allowlist of safe mutation operators.
- Runs baseline and mutated inference against a persisted scikit-learn pipeline.
- Measures ROC AUC, prediction flips, probability shift, and inference failures.
- Applies deterministic numeric policy to return PASS, WARNING, BLOCK, or INCOMPLETE.
- Saves JSON and Markdown evidence locally, updates the model's Provenance status tag, and publishes a linked impact document back to DataHub.
- AI Planner: Uses Google Gemini with structured output to dynamically plan experiments from natural language.
Before contacting Gemini, Provenance asks DataHub: What is this dataset and column?, Which downstream feature uses it? Which production model depends on it? What is the lineage path? and What owners, tags and evidence URNs are associated with it?
Through its orchestrator it have structured failure handling at every stage. If any step fails, the run captures the failure stage and message, then still attempts to publish whatever evidence exists.
This is production-agent work rather than a metadata chatbot: DataHub determines the impact surface, the agent performs an isolated model experiment, policy decides from measurements, and the outcome becomes new context in DataHub.
How I built it
Built with DataHub OSS/Core, DataHub MCP Server 0.6.0, DataHub Python SDK, Python 3.12, JavaScript, FastAPI,Jinja2, Pydantic, scikit-learn, pandas, NumPy, joblib, Gemini Developer API (optional), Docker, pytest, and Ruff.
- DataHub OSS, SDK, and MCP: DataHub's Python SDK seeds the source dataset, feature dataset, ML features, model group, production model, schema, ownership. A narrow MCP gateway reads entities, schema fields, and downstream lineage, then uses mutation tools for tag replacement and DataHub document publication.
- Real experiment runner: pandas creates an isolated evaluation copy, allowlisted mutations modify only the requested fraction, and a persisted scikit-learn pipeline runs baseline and mutated inference.
- Deterministic control: versioned numeric thresholds produce PASS, WARNING, BLOCK, or INCOMPLETE independently of any language model.
- Kafka, PostgreSQL, Feast, and MLflow appear as production-shaped metadata assets in the seeded DataHub lineage. The local demonstration does not pretend those external production services are running; experiment data and the model artifact are generated reproducibly inside the project.
Challenges I ran into
Discovering a model from usable graph evidence:
Dataset lineage alone was insufficient. Provenance required tracing the path from authorized transaction-event datasets and real-time feature datasets so I was getting trash quality validation, I resolved it by fetching information from DataHub instead of model lookup request
MCP integration:
Docuement are well written but I get confused to map the correct host and port getting unhandled errors in a TaskGroup I solved it by adding a step to set terminal env variables and then run the mcp uvx server.
Ensuring robustness of DataHub write back:
A remote DataHub mutation can fail after a valid experiment succeeds. Provenance writes the complete local report first and reports publication status separately. A failed write-back never erases the experiment .
This project addresses a genuine, painful gap in production ML operations that most organizations suffer from today.
Accomplishments that I am proud of
Most data quality tools (Great Expectations, dbt tests, etc.) validate data contracts like column types, nullability, ranges. Whereas my Provenance validates model behavior under data change.
- Local-first design: writes
JSON+Markdownreports locally before attempting DataHub publication. This ensures evidence survives even if DataHub write-back fails. - I successfully integrate/combine multiple different host running workflows with each other for smooth end-to-end cycle.
What I learned
Agentic planning and deterministic control complement each other. An AI planner can translate intent into a bounded experiment, but observed inference and explicit policy should own a high-consequence release decision so that it pay attention to behavioural potential impact and chance of silence degradation.
I learnt DataHub offer awesome and faster integration platform for data context manageent and upstream changes management .
Schema, ownership, tags, and lineage are not merely documentation: together they can determine what an agent should test
What's next for Provenance
Next, I would like to integrate Provenance with real CI/CD pipelines, schema registries, data-observability systems, and deployment agents so it can automatically assess proposed and detected changes across more datasets and model platforms. All this would make it a multiple task handling layer.
| Role | Value |
|---|---|
| Data Engineers | Get automatic model-impact assessment before merging schema changes |
| ML Engineers | Protect production models from silent upstream data drift |
| Data Platform Teams | Extend DataHub from a passive catalog into an active safety layer |
| Risk/Compliance | Get auditable, deterministic evidence for regulatory review |
| SREs / Ops | Prevent data-related ML incidents before they reach production |
Built With
- datahub-core
- datahub-mcp
- docker
- fastapi
- gemini
- pandas
- pydantic
- scikit-learn

Log in or sign up for Devpost to join the conversation.