You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A new catalog-interaction skill for ML feature provenance safety: given an mlModel URN (or name), determine whether any serving/training feature traces through DataHub FineGrainedLineage to a column carrying a forbidden governance tag (e.g. post_outcome, is_target), then optionally package write-backs and remediation guidance.
Proposed skill name: datahub-ml-leakage (open to datahub-ml-governance if maintainers prefer a broader umbrella).
Workflow (mirrors existing skill structure)
Resolve target — accept an mlModel URN or search by name; confirm platform / env / version.
Acquire provenance subgraph — pull MLModel → features / datasets, then column-levelFineGrainedLineage / UpstreamLineage / SchemaField tags + glossary terms. Prefer CLI/MCP lineage with column depth; fall back to aspect reads when needed.
Normalize + traverse (deterministic) — build an in-memory adjacency over schema fields; cycle-safe upstream DFS with a bounded hop depth. No LLM calls in this step. The skill must invoke a deterministic checker (script/CLI/library) when available, or perform an explicit, auditable tag-reachability walk whose result is derived only from acquired aspects.
Evaluate policy — default policy: block if any path reaches a node tagged post_outcome / is_target (configurable tag / glossary-term set). Incomplete or unresolvable lineage is fail-closed (INCOMPLETE_LINEAGE), not “assume clean”.
Emit evidence package — structured verdict (approved | blocked), reason code, and the concrete evidence path(s) with DataHub UI deep links. Never invent blast-radius scores or fabricated ancestors.
Write back (optional, approval-gated) — after human confirmation:
tag the model (model-at-risk / model-approved)
raise IncidentInfo on the offending dataset / field
append InstitutionalMemory audit notes on the model
Remediate (advisory only) — only after a block, help the engineer understand which column / rename / hop poisoned the feature and how to cut the edge. If Agent Context Kit / MCP mutations are used here, keep include_mutations=False for the advisor path; mutations stay in step 6 with explicit approval.
The skill would follow the repo’s existing conventions: YAML frontmatter, Multi-Agent Compatibility, Not This Skill, Content Trust Boundaries, numbered steps with mandatory approval before writes, Common Mistakes / Red Flags / Remember, plus references/ for policy defaults and an evidence-report template.
Routing addition for using-datahub:
User Intent
Skill
“Does this ML model have target leakage?” / “Can we deploy this model?” / “Trace features to post-outcome columns”
datahub-ml-leakage
Why this is not just datahub-lineage
datahub-lineage answers “what feeds X?”. This skill answers “is X safe to deploy given governance tags on its ancestors?”.
That difference matters:
datahub-lineage
Proposed datahub-ml-leakage
Primary entity
Dataset / pipeline
mlModel + feature provenance
Success criterion
Accurate graph exploration
Policy verdict + evidence path
Incomplete lineage
“0 edges / note missing lineage”
Fail-closed block
Output
Map / impact list
CI-usable authorization evidence
LLM role
Narrate the graph
Never authorize; advise only after a block
Target leakage hides behind renames and intermediate tables. Flat tag checks on the model or feature store miss it. FineGrainedLineage is exactly the DataHub capability that makes the check possible — the skill catalog does not yet encode that ML-safety workflow.
Overlap with datahub-quality / datahub-enrich (honest note)
datahub-quality already raises incidents and creates assertions. This proposal reuses that write-back surface, but the decision is lineage-tag reachability on an mlModel, not assertion health.
datahub-enrich applies tags/owners. This skill may request those mutations, but only as post-verdict governance memory — not as the detection mechanism.
datahub-lineage remains the right skill for open-ended “show me upstream of X” exploration.
Maintainer’s call on shape — happy to implement either:
a separate skill (as proposed), keeping Lineage exploratory and Quality check-oriented, or
a composed workflow section under Lineage (“ML provenance safety”) plus Quality write-back steps.
Non-negotiable design invariants (learned the hard way)
These should be Red Flags / Remember items in the skill, not soft suggestions:
Verdict determinism — given the same acquired graph + policy, the verdict is identical. The LLM must not vote on approve/block.
Traversal decoupling — the reachability walk runs on an in-memory subgraph (or an equivalent deterministic tool). No “ask the model if this path looks leaky”.
This split — deterministic enforcement, generative remediation — is the difference between a useful ML governance agent and a hallucination hazard in CI.
Reference implementation
Working end-to-end prototype from the Build with DataHub: The Agent Hackathon:
I am not proposing to vendor the whole service into this repo. The ask is a skill that teaches agents the correct DataHub-native workflow and invariants, with optional hooks to a small deterministic checker. UnderWrite is proof the workflow works against Quickstart + live GMS.
Why now
Skills already cover search, lineage exploration, enrichment, and quality — but not MLModel deployment authorization against column-level provenance.
FineGrainedLineage is one of DataHub’s strongest differentiators; packaging an ML safety workflow around it makes that capability legible to coding agents.
Teams already use DataHub as the metadata plane for ML features; without a fail-closed skill pattern, agents will either skip the check or let an LLM “eyeball” lineage — both are unsafe.
Aligns with Agent Context Kit guidance: tools for investigation; mutations explicit; authorization kept deterministic.
Proposed deliverables (if accepted)
skills/datahub-ml-leakage/SKILL.md following repo conventions
What
A new catalog-interaction skill for ML feature provenance safety: given an
mlModelURN (or name), determine whether any serving/training feature traces through DataHub FineGrainedLineage to a column carrying a forbidden governance tag (e.g.post_outcome,is_target), then optionally package write-backs and remediation guidance.Proposed skill name:
datahub-ml-leakage(open todatahub-ml-governanceif maintainers prefer a broader umbrella).Workflow (mirrors existing skill structure)
mlModelURN or search by name; confirm platform / env / version.MLModel→ features / datasets, then column-levelFineGrainedLineage/UpstreamLineage/SchemaFieldtags + glossary terms. Prefer CLI/MCP lineage with column depth; fall back to aspect reads when needed.post_outcome/is_target(configurable tag / glossary-term set). Incomplete or unresolvable lineage is fail-closed (INCOMPLETE_LINEAGE), not “assume clean”.approved|blocked), reason code, and the concrete evidence path(s) with DataHub UI deep links. Never invent blast-radius scores or fabricated ancestors.model-at-risk/model-approved)IncidentInfoon the offending dataset / fieldInstitutionalMemoryaudit notes on the modelinclude_mutations=Falsefor the advisor path; mutations stay in step 6 with explicit approval.The skill would follow the repo’s existing conventions: YAML frontmatter, Multi-Agent Compatibility, Not This Skill, Content Trust Boundaries, numbered steps with mandatory approval before writes, Common Mistakes / Red Flags / Remember, plus
references/for policy defaults and an evidence-report template.Routing addition for
using-datahub:datahub-ml-leakageWhy this is not just
datahub-lineagedatahub-lineageanswers “what feeds X?”. This skill answers “is X safe to deploy given governance tags on its ancestors?”.That difference matters:
datahub-lineagedatahub-ml-leakagemlModel+ feature provenanceTarget leakage hides behind renames and intermediate tables. Flat tag checks on the model or feature store miss it. FineGrainedLineage is exactly the DataHub capability that makes the check possible — the skill catalog does not yet encode that ML-safety workflow.
Overlap with
datahub-quality/datahub-enrich(honest note)datahub-qualityalready raises incidents and creates assertions. This proposal reuses that write-back surface, but the decision is lineage-tag reachability on anmlModel, not assertion health.datahub-enrichapplies tags/owners. This skill may request those mutations, but only as post-verdict governance memory — not as the detection mechanism.datahub-lineageremains the right skill for open-ended “show me upstream of X” exploration.Maintainer’s call on shape — happy to implement either:
Non-negotiable design invariants (learned the hard way)
These should be Red Flags / Remember items in the skill, not soft suggestions:
blocked(INCOMPLETE_LINEAGE), never silent approve.This split — deterministic enforcement, generative remediation — is the difference between a useful ML governance agent and a hallucination hazard in CI.
Reference implementation
Working end-to-end prototype from the Build with DataHub: The Agent Hackathon:
freeze-grand-prize-readydatahub-agent-context, remediation withinclude_mutations=False), and MCP-style write-backs (GlobalTags,IncidentInfo,InstitutionalMemory)verdict == approvedandevaluation_source == live_datahubI am not proposing to vendor the whole service into this repo. The ask is a skill that teaches agents the correct DataHub-native workflow and invariants, with optional hooks to a small deterministic checker. UnderWrite is proof the workflow works against Quickstart + live GMS.
Why now
Proposed deliverables (if accepted)
skills/datahub-ml-leakage/SKILL.mdfollowing repo conventionsreferences/policy-defaults.md(tag/glossary predicates, fail-closed rules, depth bounds)templates/evidence-report.template.md(verdict + reason code + path table + UI links)using-datahubHappy to open a draft PR once maintainers confirm skill-vs-extension shape and naming.
Related
datahub-incident-response)datahub-lineage(exploration) anddatahub-quality(incidents/assertions)