
Evr
io.github.BrienBounded由 GitHub 账号 BrienBounded 发布v0.1.2更新于 Oct 24, 2026
Checks agent traces for evidence-readiness: verifies evidence is present, not that it is true.
概览
检查智能体执行轨迹是否包含事后重建四类故障所需的证据。
- 可以做什么
- 通过 stdio 暴露证据就绪度检查器,提供三个工具:check_trace_readiness(文件、目录或内联 JSON)、get_requirement 和 list_class_requirements。它依据公开规范评估轨迹,覆盖 config_drift、session_isolation_failure、cascade_contamination 和 prompt_injection 四类故障,并报告缺失的具体字段及其所属的 span 类型。它只检查证据是否存在,不检查证据是否真实,也从不判定故障是否发生。
- 适用场景
- 适用于为智能体做埋点、希望事后能从遥测数据重建事故的场景,也适用于评估某智能体系统的轨迹是否足以支持事后损失裁定。还可用于 CI,在每个拉取请求上检查轨迹。
- 运行要求
- 作为本地 stdio 进程运行,无网络调用,未声明认证或环境变量。需安装 PyPI 包 evidence-readiness(Python 3.10 或更高版本,无运行时依赖)并运行 evr-mcp 控制台脚本,或从克隆仓库按路径运行该模块。检查器 CLI 是另一个名为 evr 的脚本。
安装
README
evidence-readiness
Checks whether an agent execution trace contains the evidence a post-hoc causal reconstruction would require.
When an AI agent causes a loss — a bad config change, a cross-session data leak, contaminated output cascading between agents, a prompt injection — someone eventually has to reconstruct why from the trace. Traces from general-purpose agent instrumentation cannot support that reconstruction: the evidence was never recorded. This repository contains the evidence-readiness specification (SPEC.md), a checker that evaluates a trace against it, and reference fixtures showing what conformant instrumentation looks like.
What this is — and is not
- It checks that evidence is present, not that it is true. A fabricated-but-internally-consistent trace passes. This tool authenticates nothing, and its result must never be relayed as "this agent is safe."
- It never determines whether a failure occurred. It answers "does this trace contain what a reconstruction of class X would require," never "did class X occur." It contains no detection or scoring logic.
- This repository does not contain the reconstruction engine. The
specification is published so the method is assessable; the engine is
available for inspection under the terms in
SOURCE_AVAILABILITY.md. - Four failure classes are covered:
config_drift,session_isolation_failure,cascade_contamination,prompt_injection. A fifth (tool_misuse) was investigated and declined for stated structural reasons — a documented negative result, not a gap (SPEC.md §8). - The spec is a profile of the OTel GenAI semantic conventions: core OTel plus documented extensions (SPEC.md §2). It carries no standards-body endorsement.
Who it is for
- Engineers instrumenting agents who want incidents to be reconstructable after the fact — diff your trace against a conformant fixture and see what to add.
- Reviewers (insurers, auditors, counterparties) evaluating whether an agent system's telemetry would support retrospective loss adjudication.
- Coding agents: see
llms.txt,spec.json(the machine-readable spec export, generated — never hand-maintained), and the MCP server insrc/evidence_readiness/mcp_server.py(configuration below).
Quickstart (60 seconds)
The package has zero runtime dependencies; pip install . in any
Python ≥3.10 environment is the whole setup. Equivalent uvx forms, both
exercised: uvx --from . evr check ./traces from a clone, and
uvx --from evidence-readiness evr check ./traces from the package index.
Both need --from, and the trailing evr is not optional. A bare
uvx evidence-readiness ... runs the console script named for the
distribution, and that script is the MCP server (below), not the checker
— it reads standard input, ignores the arguments, and exits successfully
without checking anything.
Exit codes carry no reconstruction vocabulary: 0 all requirements met ·
1 one or more requirements partially met · 2 one or more requirements
unmet · 3 malformed input (SPEC.md §9 is the source of record).
Universal requirements (EVR-R1..R6) drive the exit code; per-class evidence
readiness is reported separately, and --require-class folds a named
class's readiness into the exit code. For every failed requirement the
output names the specific missing field and the span kind it belongs on.
Every run ends with the same statement this README opened with: presence, not truth — evidence being present does not make it authentic, and a passing trace is not a safe agent.
CI: check every PR (GitHub Action)
A spec is read once; a check that runs on every PR changes instrumentation
behavior. Add this to a workflow in the repository that produces your
traces (evidence-readiness is this repository's owner once published; from
within this repository itself, uses: ./.github/actions/readiness-check):
That is the whole setup — the default GitHub runner's python3 is
sufficient, and the Action installs the (zero-dependency) checker itself.
The step fails when the checker's exit code exceeds
minimum-passing-exit-level (default 0; exit-code semantics as in the
Quickstart above). Optional required-classes folds named classes'
evidence requirements into the exit code. Outputs: exit-code,
exit-meaning, report-path (full JSON report), and
per-class-readiness. PR annotations name each incomplete requirement's
specific missing field and span kind. Every annotation is a statement
about the trace telemetry, never about the agent: an annotated PR has
incomplete evidence, not a detected failure — and a clean run is not a
safe agent. This repository's own CI (.github/workflows/ci.yml)
dogfoods the Action against fixtures/, asserting the expected —
deliberately nonzero — exit codes per bucket.
MCP server (agent surface)
src/evidence_readiness/mcp_server.py exposes the checker and the
requirement data to agents over the Model Context Protocol (stdio).
Three tools: check_trace_readiness (file, directory, or inline JSON —
inline content is processed in memory and never written anywhere),
get_requirement, and list_class_requirements.
Installing the package delivers three console scripts, and it is worth being precise about which is which before you copy anything below:
So evidence-readiness is not the checker. Typing it at a shell gets a
server waiting for JSON-RPC on stdin, which looks like a hang. Use evr.
If the package is installed, the evr-mcp console script is the whole
configuration:
From a clone, with nothing installed, run the module by path instead:
Either way it needs no dependencies, and the second form needs no
installation. It is local-only: no network calls, no phone-home,
nothing persisted.
It deliberately has no submission tool — the server never transmits
anything; submitting a trace anywhere is a human decision gated on the
CONTRIBUTING.md disclaimer and a redaction judgment an agent cannot
make. Every tool description carries the presence-not-truth statement,
so a readiness result cannot reasonably be relayed as "this agent is
safe."
Status
The specification is versioned (SPEC.md carries its current
version and correction log) and the checker is implemented against it,
with reference fixtures (fixtures/), the machine-readable export
(spec.json), the agent surface (llms.txt, the MCP server), and the CI action
(.github/actions/readiness-check/) in place. The methodology and
limitations paper is drafted (PAPER.md); its front-matter
banner records which sections have had an adversarial read and which
have not. The standing
disclosure policy is SOURCE_AVAILABILITY.md;
reporting and trace-submission terms are
CONTRIBUTING.md, with redaction guidance in
REDACTION.md and release verification in
RELEASING.md. Corrections are logged in CHANGELOG.md.
The spec is descriptive: every requirement is backed by an observed outcome
in a validation record of 240 reconstruction attempts, 222 of them
synthetic — backing is per-requirement, from the specific cases that
exercised it, not a property measured across all 240 (18 real-world
Who&When cases validate the abstention direction only; the split is stated
wherever the count appears — SPEC.md §1).
Attribution
Brien Buckman
Licensed under Apache-2.0 (see LICENSE).
The substance of this repository's development record is public: corrections that affect published content are logged in CHANGELOG.md, and the development defect record, as it bears on the method, is summarized in PAPER.md §8.6. The commit history in which these files were drafted and revised is not published.
来源:README.md,提交 725dbba
工具
0版本历史
1- v0.1.2最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分