跳转至

验证

已验证提交:main 2dd5effe 上的 a64367a9。

门禁检查

在 macOS 26.5.1 上使用 Node 22.23.1 对该树运行:npm run typecheck、lint(oxlint 加上 verify:module-boundaries,2172 个文件)、format:check、knip、metadata:check、docs:check、jscpd(3.43% 重复行)、scan:todos 和 mcp-catalog:check 均以退出码 0 结束。oxlint 对 12 个更改的 TypeScript 文件报告的结果,不包含 main 对相同文件未报告的任何发现。

先运行 npm run test:prepare,再运行 npm run test:changed(与更改文件相关的测试):84 个文件,1531 通过,3 跳过,0 失败。其中包括:

  • 服务:Evidence 文件所投射的内容与相同 Evidence 内联投射的内容完全一致;响应文本超出内联预算的捕获会被以内联方式拒绝,并返回 resource_constraint,同时从其文件投射;相对路径、缺失文件和不是 Evidence 的 JSON 均被拒绝;同步 API 拒绝未读取的文件源;
  • 编译后的 CLI:引用 Evidence 文件的请求所投射的 manifest 与相同 Evidence 内联时相同;
  • MCP:内联、保留和文件源给出相同的 manifest,输出针对公布的 schema 验证通过,且拒绝相对路径;
  • 文件源模块:大小估计、认证余量拒绝、在读取前拒绝已取消的请求,以及在调用方资源范围内的读取;服务对被取消的文件请求返回类型化取消;运行期间被中止的请求,即使在其读取之后,也返回类型化取消,因为服务在每次检查前都会让出;
  • 配对规则:三个 owner/repo 配对会为集合和数字详情路由合并,而两个配对,或共享同一命名空间的三个配对,则保持字面量;同时选中 sibling-variance 时配对仍会合并,因为配对先被合并。当 sibling-variance 随后对配对前面的段进行模板化时,每个配对参数保持其角色。

一个丰富的捕获

一个 Gitea 28.1.0 实例,通过其 API 以一个人工构造的世界(12 人、4 个组织、16 个公共仓库、320 个议题及约 600 条评论、标签、里程碑、提交、拉取请求和发布)填充数据,由一次包含 1,217 次 API 读取的 capture-browser-scenario 运行读取:24 秒内产生 1,218 个事务,10.7 MB Evidence,无任何丢弃。场景的父提交不在 main 上,因此本次运行使用的是此提交合并到场景捕获更改(morluto/rea#5182)之后、并为宿主打包的版本。

内联源,先前规则 带 sibling-pair-variance 的 Evidence 文件源
Manifest resource_constraint(96 MiB 预算) 在 4.1 秒内构建,最大 RSS 459 MB
工具 446(手动提高预算后) 63
记录的交换 1,218 1,218
只有一条记录的工具 77% 49%

配对规则将 25 个路由族模板化为 {repo_namespace}/{repo_name}。一个最多接受 128 个工具的模型提供者,对 446 个工具的 manifest 的每次请求都返回 HTTP 400 拒绝。

随后导出了 63 个工具的环境,在 AgentEnv runner 中,其冒烟任务通过,十二个生成的检索任务使用 openai/gpt-oss-120b 获得 12/12,使用 zai-org/GLM-5.3-Flash 获得 12/12,且无提供者错误。446 个工具的 manifest 在其自身生成的任务上得分为 0/12 和 8/12,其中 0 分是提供者的工具限制所致,而非模型问题。

随后审查发现,此处运行的规则还将一个 id 的子资源合并(/users/alice/followers、/users/bob/following 和 /users/carol/starred 合并成了一个工具),而且现在只有在字面量紧随其后时配对才符合条件。上面的 Gitea 捕获早于该守卫,并未使用它进行投射:63 个工具中是否有任何工具以这种方式合并了子资源,以及裸 /repos/{owner}/{repo} 路由下每个配对保留一个工具时的工具数量,在此无法确定。

Linux 后续(2026-10-20)

基于 dd2bf3565(包含 main 5fa4defcb),使用 Node 24.18.0 和 npm 11.16.0。文件读取器现在负责认证;无效的 Evidence 返回所选文件路径和相对于文件的 content_issues。服务与公布的 MCP 错误信封(error-envelope)回归测试覆盖了这一边界。

  • 域分析视图、应用分析视图和错误投射:16 个文件,298 个测试通过。
  • 编译后的分析视图 CLI/MCP 以及环境 serve/export 边界:5 个文件,48 个测试通过。
  • 串行 Turbo 运行:类型检查、lint、format、knip、包元数据和所需的运行时/契约产物:11 个任务通过。文档/目录验证:8 个任务通过。架构守卫在 1,595 个源文件中通过。
  • 真实的 Gitea 28.2.0 官方 Linux 二进制(已校验发布的压缩 SHA-256)、隔离的 SQLite 数据库、两个用户和三个具有大型议题正文的公共仓库。实际 Chromium 导航捕获了九个 API 事务、45 个事件、无丢弃、12,584,312 字节 Evidence。内联 manifest 投射被 resource_constraint 拒绝;文件 CLI 和默认 stdio MCP 在选中所有模板规则的情况下就五个工具达成一致。末尾三个用户子资源保持分离。畸形文件的诊断信息指出了文件 JSON 根。HTTP SDK 重放验证了六个完整的小型响应和十二个大型响应的精确 256 KiB 前缀,每个均标记为截断。所拥有的 Gitea、浏览器和 replay-server 进程均已停止。

使用了一个 CPU 和一个测试工作线程。每 50 ms 采样一次后代 RSS 总和(共享页面可能被重复计数):聚焦测试 15.834 秒 / 15.327 CPU 秒 / 峰值 764.69 MiB;边界测试 194.916 秒 / 190.121 CPU 秒 / 1,795.15 MiB;静态/构建 266.311 秒 / 259.658 CPU 秒 / 4,677.44 MiB;真实 Gitea 工作流 31.631 秒 / 24.999 CPU 秒 / 2,146.29 MiB。这些是单次运行,而非冷/热比较;未测量模型 token 使用量。第一次外部探针在预期的 CLI 拒绝处停止,因为其驱动程序拒绝了退出码 1;驱动程序已修正,完整工作流通过。此处不声称任何新的 macOS、Windows、模型任务评分或 AgentEnv runner 验证。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea