Agent Evidence Graph
DataHub Agent Hackathon · Agents That Do Real Work

用运行证据验证 Agent 发布,而不是相信声明。

This agent claims to be read-only and canonical-only. In a real v1.3 run, it writes DataHub metadata and queries a deprecated revenue table.

比较一个 Agent 版本承诺做什么与实际做了什么,再把高风险版本交给人工审核。

面向 AI 平台治理负责人和 Agent 发布审批者:当新版本准备进入生产环境, 或已部署版本出现新行为时,在无需逐条阅读运行日志的情况下作出发布决定。

REAL DATAHUB I/O SCRIPTED TOOL SELECTION DETERMINISTIC ADJUDICATION HUMAN-APPROVED WRITEBACK

00 · Release decision

v1.3 必须经过审核,不能直接批准发布

Reviewer 不需要逐条阅读 runtime log。版本化轨迹、DataHub 治理事实、确定性策略和已验证治理动作共同支持这个发布决定。

1

发生了什么变化?

v1.3 执行了未申报的写工具,并直接读取了未申报且已废弃的 legacy_revenue

2

为什么重要?

canonical_revenue 是受治理替代项,并持续向 weekly_revenue_report 供数;本次运行偏离了仍然活跃的治理生产路径。

3

谁来决定?

AI 平台治理负责人或 Agent 发布审批者审核被引用的证据,以及拟执行的精确治理动作。

4

Reviewer 可以怎么处理?

修复 Agent、更新声明并重新审批,或申请有期限的 policy exception。在此之前,发布状态保持 NEEDS_REVIEW

01 · Problem

声明是静态的,Agent 行为会漂移

Agent Profile 可以一直写着“只读”和“只使用规范财务数据”,但一次工具变更或数据回退, 就可能让同一版本获得写能力、访问未声明资产,或使用已经废弃的数据源。只检查注册信息, 无法证明这个版本在真实运行中做了什么。

1

注册表回答“应该做什么”

它擅长描述名称、能力、工具和数据关系,但不能单独证明一次真实运行调用了哪些工具、是否发生写入。

2

日志缺少治理语义

日志知道某个 URN 被访问,却不知道它是否 Deprecated、由谁负责、替代项是什么,以及会影响哪些下游资产。

风险存在于“当前版本实际做了什么”与“组织批准它做什么”之间的差距。

02 · Solution

把声明、运行和治理连接成证据链

系统不让 LLM 判断自己的安全性。它把可追溯事实标准化,由确定性检测器计算差异, 再把经人工批准的治理结果写回 DataHub。

01Versioned Claim只读声明、允许工具、允许数据集
02Runtime Trace共享 proxy 自动记录真实工具调用
03DataHub Context状态、owner、schema、lineage
04Detectors权限漂移与废弃数据访问
05Evidence Answer稳定证据 ID、结论与修复建议
06Governed Actiondry-run、人工批准、写回、回读
Missing current-version runtime evidence → UNVERIFIED, never SAFE. 当前版本没有运行证据时,系统主动弃权,不把旧版本或静态声明外推成安全结论。
1 / 8 vs 8 / 8:claim-only baseline 只命中一个预期状态;加入运行与 DataHub 证据后,确定性规则命中八个固定回归案例。它是 falsifiable regression suite, 不是 production benchmark
Reviewer 的三种处理路径:修复实现以恢复批准行为;更新声明并为新增能力重新申请批准; 或申请有期限的 policy exception。任何路径都必须产生当前版本的新证据,才能重新获得 VERIFIED 状态。

03 · Why DataHub

DataHub 是风险判断所需的上下文图

Runtime traces prove what happened; DataHub explains why it matters. Trace 证明 v1.3 实际访问了 legacy_revenue;DataHub 进一步证明它已废弃、 canonical_revenue 是受治理替代项,并把这个偏差放回生产依赖路径。

真实 Agent-loop 读取官方 Agent Context Kit 的 search、get_entities、get_lineage,不是仅安装或探测。
数据生命周期原生 deprecation aspect、替代 URN 与治理 Tag 描述数据健康。
受治理生产路径orders / refunds → canonical → weekly report 的真实 lineage 证明规范路径仍有活跃消费者。
责任与含义owner、description、schema fields 让工具调用获得业务语义。
兼容身份OSS v1.6.0 使用明确标注的 compatibility DataFlow,不伪称 native Agent Registry。
可执行治理NeedsReview Tag 与审计 Document 真正写入 DataHub,并立即回读。

04 · Real Evidence

同一个 Agent,两种可验证结果

两个版本使用同一套声明模型、工具代理、证据解析器和检测器。结果来自 declared / observed 集合差异与 DataHub 状态,不来自硬编码版本判断。

版本 / Run ID声明真实运行结果
v1.2
Loading manifest…
Read-only;canonical finance data Agent Context Kit search / get_entities / get_lineage;读取 canonical revenue;8 events NO HIGH FINDING
v1.3
Loading manifest…
仍声称 Read-only;仍声称 canonical-only Agent Context Kit search / get_entities / get_lineage;读取 legacy_revenue;SDK entities.update;10 events NEEDS_REVIEW
2 HIGH findings

HIGH · Permission / Tool Drift

声明只读,但 trace 记录了已执行的写工具,而且该工具不在版本 allowlist 中。

READ_ONLY_CONTRADICTION:datahub.add_tags; UNDECLARED_TOOL:datahub.add_tags

HIGH · Deprecated / Undeclared Dataset

运行访问未声明的 legacy_revenue;DataHub 回读证明它已 Deprecated,并指向 canonical 替代项。

DEPRECATED_DATASET_ACCESS:legacy_revenue; UNDECLARED_DATASET_ACCESS:legacy_revenue

Why HIGH: Deprecation alone remains MEDIUM. It escalates to HIGH because canonical_revenue is the governed replacement and actively feeds weekly_revenue_report.

5live DataHub dataset entities
3live DataHub lineage edges
0unsupported claims

05 · Eligible Integration

集成证据写进每个运行事件

每个成功 tool-end event 记录 integration surface、底层工具名、包版本、source kind、 dataset URN、mutation 状态与 canonical hash,因此不会把“依赖已安装”误当成“Agent 已使用”。

Trace toolIntegration surfaceUnderlying toolVersion作用
datahub.searchagent_context_kitsearch1.6.0.17发现受治理的 revenue assets
datahub.get_entitiesagent_context_kitget_entities1.6.0.17读取 deprecation、schema、ownership
datahub.get_lineageagent_context_kitget_lineage1.6.0.17v1.2 读取 canonical upstream;v1.3 读取 governed replacement downstream → weekly report
duckdb.execute_read_queryduckdbexecute_read_query1.5.5执行任务数据读取
datahub.add_tagssdkentities.update1.6.0.6已批准的 demo runtime mutation

06 · Human Governance

批准是硬边界,不是 UI 装饰

runtime mutation 与 governance writeback 是两个独立授权。当前 release 绑定一个 release-bound immutable approval objectLoading manifest…。 安全边界来自不可变 payload、目标 allowlist、人工确认与 read-after-write;approval ID 只是该对象的查找键,并不单独构成安全边界。

1

Prepare

持久化 exact payload、supporting finding IDs 与 rollback payload;此时不写 DataHub。

2

Approve

人工审核并批准完整 immutable object 后,mutation layer 再次校验两个 allowlisted operations。

3

Verify

写入 NeedsReview Tag 与审计 Document;两项均回读成功后才进入 APPLIED。

已验证结果:2 / 2 operations 均为 success=trueverified=true;审计 Document 包含当前 v1.3 run ID。

07 · Reviewed Screens

评委看到的是只读证据快照

Judge mode 从带哈希的 release artifacts 加载当前 run,不连接 mutation controls。

Judge mode 中的 v1.3 真实运行与集成字段
真实 v1.3 runtime。显示 Agent Context Kit、DuckDB 与 SDK 的 surface、tool、version 和 event hash。
Judge mode 中的 v1.3 findings 与已批准治理记录
确定性 finding 与治理记录。页面只读展示 NEEDS_REVIEW、两个 HIGH 与 APPLIED approval。
DataHub 中 canonical revenue 的真实上游 lineage
真实 DataHub lineage。canonical revenue 的上游是 orders 与 refunds。
DataHub 中 v1.3 compatibility DataFlow 的 NeedsReview 标签
治理结果回到 DataHub。compatibility DataFlow 显示 NeedsReview 标签。

08 · Verification

机器校验,而不是手写“已通过”

Loading…tests passed
Loading…branch-aware core coverage
8 / 8evidence-aware fixed cases
0unsupported claims

统一真实门

uv run agent-evidence verify --require-real --require-eligible-integration exit 0,覆盖 Ruff、strict mypy、pytest、真实 DataHub、当前 trace、eligible calls 与 writeback readback。

Release source of truth

examples/release-manifest.json 固定版本、run ID、测试/覆盖率、截图哈希与审批目标;submission checker 阻止旧数字重新进入评委材料。

1 / 8 与 8 / 8 的对照已前置到 Solution,用来解释“只看声明”会漏掉什么;这里仅记录 机器 gate,不把固定回归集包装成 production benchmark。

09 · Scope & Readiness

诚实边界与提交状态

已经证明

  • Agent Context Kit 在两个真实 Agent run 中提供 DataHub context。
  • 两个确定性 detector 能发现权限漂移与废弃/未声明数据访问。
  • 未批准不写回;批准后 Tag 和 Document 均进入 DataHub 并被回读。
  • 真实、synthetic 与 fixture 来源在 artifact 中明确区分。

没有声称

  • 这不是完整企业 Agent 治理平台,也不能覆盖所有风险。
  • 当前只演示一个 Agent、两个版本和两个 detector。
  • Agent identity 是 compatibility DataFlow,不是 native Agent Registry。
  • 没有 provider credential 或本地模型,因此不声称 model-backed run。
  • Quickstart 是本地开发环境,不代表生产部署。
当前 verdict:Loading manifest… clean-room release artifact 已复演。最终状态完全来自 release manifest:只有公共源码、Demo、 Judge Replay 三个 URL 都存在并完成匿名访问验证时,生成器才会输出 ready 状态。 Loading release blockers…
数据与 AI 披露:财务行数据和八个 eval cases 为 deterministic synthetic data; offline adapter samples 为 fixture;列出的 DataHub 读写和 traces 为真实本地操作。 风险规则为确定性代码。开发过程中使用了 AI coding assistance,详见 DISCLOSURES.md。
Deterministic policy is a feature: an optional LLM may select tools or explain normalized evidence, but it cannot assign severity or approve its own remediation。DataHub RFC PR #18966 已提交上游评审,但不被表述为已接受或已实现的贡献。