BULWARK
DataHub MCP ReadGraph Write-Back Active
Built for data platform teams running AI agents

Your agent's changes don't fail loudly. They fail silently in production ML models.

An AI agent drops a column. The SQL query executes cleanly. No syntax error is thrown. No on-call engineer is paged. Three production models depended on that column, and nobody finds out until churn scores go quietly wrong next week. The failure is that nothing appears to break until it's expensive.

Who it's for

Data platform teams who have started letting AI agents propose schema changes, dbt refactors, and database migrations on production infrastructure — and want a second opinion before any of it ships.

bulwark / review-queue
Proposal 0412
Task: clean up unused/deprecated columnsContained before ship
DROP_COLUMN — PROD.users.user_region

A PRODUCTION ML model (churn_model) depends on this column. Dropping it breaks live predictions with no error thrown.

write-back →urn:li:tag:bulwark-contain
Downstream blast radius (2)
exec_dashboard
team-analytics
churn_modelML model
team-growth

How it works

01 / 03
01

Worker proposes

Your AI agent proposes a schema change — a dropped column, an altered type. Bulwark intercepts it before it reaches the database.

02

Governor reads real lineage

A separate agent queries DataHub's actual downstream graph via mcp-server-datahub — which dashboards, models, and pipelines depend on this column, for real.

03

Verdict ships with the graph

Bulwark allows, warns, or contains the change — and writes the verdict back into DataHub so every future agent inherits the ruling.

Why a second agent, not better prompting
02 / 03

The governor has different authority than the worker.

An AI worker agent proposed a task. If that same worker checks its own work, it shares the exact same blind spots that produced the initial proposal. Bulwark splits authority: the worker has permission to propose, the governor has permission to block, and neither can override the other.

The governor reads end-to-end DataHub lineage via mcp-server-datahub. Its veto is derived dynamically from the graph, catching what the worker structurally cannot.

Why it compounds over time

The next agent inherits the verdict.

When Bulwark contains a proposal, it writes metadata tags urn:li:tag:bulwark-contain back into DataHub. This creates a ratchet effect: every decision feeds back into the graph, ensuring subsequent AI agents and human engineers inherit the governor's ruling.

Review pending containments

03 / 03

Open the review queue to evaluate contained worker proposals, inspect downstream blast radius, and execute human decisions.

Open console queue