Verification¶
已验证基线:bf1eeee9(获取自 main)。
在实现工作树上执行,先运行 npm ci 和 npm run build:cached;以下所有检查均按本轮的写法运行,且是在最后一次源码更改之后。
npm run check:fast:类型检查和 lint 通过。npm run format:check:通过。npx knip:通过(退出码 0)。npm run jscpd:3.40% 的重复行,涉及 3331 个文件,低于 3.5% 的门槛;没有重复块涉及本次更改新增的文件。npm run scan:todos:通过。npm run docs:check:构建的文档检查和 README 一致性符合性测试(5 项测试)通过。npx vitest run --project domain --project services:338 个文件、5830 项测试通过,5 项预先存在的跳过。npm run test:focused --覆盖 analysis-view 的 MCP 和 CLI 边界、environment serve 和 export 的 CLI 边界、environment serve 的 MCP 边界、compact input-schema 的 MCP 预算、analysis-detail 和 advertised-input-example 契约,以及 qlog 验收测试:9 个文件、68 项测试通过,1 项预先存在的跳过。
真实捕获(测试套件之外):构建后的视图通过应用程序服务运行于 44 个记录的捕获(39 个 HAR,5 个浏览器场景)上,使用全部三条模板规则,每个耗时 7 至 46 ms。42 个生成了状态:568 个类型、2,213 个实体、2 个文档,以及 1,258 个读取工具中 710 个为状态支持(211 个 item、497 个 list、2 个文档视图)。其余读取工具是记录视图:306 个非实体(单例、配置和计算视图),129 个没有身份字段,32 个正文不可用(大多数是 Nomad 正文,包含超出精确原生转换范围的整数),31 个列表和 7 个项目无法重现,26 个没有初始记录,12 个查询 POST 以及 5 个在多个查询下读取的文档。那两个未生成状态的浏览器场景捕获,被 resource_constraint 内联拒绝,因为环境清单视图在未更改的 main 上也会拒绝它们。
此处未涵盖:从状态提供工具调用、AgentEnv 数据平面和写入效果,这些是后续增量内容。
Linux 后续(2026-10-20)¶
Node 24.18.0 / npm 11.16.0,保留了作者的 47f8a27a9 main 集成,并集成了 main d72021b0d。在两次修复前的运行中,有八个回归用例失败:跨写入的成员添加/移除、字段存在性、稀疏字段观测,以及紧凑复合总计。这些修复在选择最新记录之前会比较成员资格,在稀疏读取中保留每个字段的观测,并识别 totalcount/itemcount。API-base 分组会追加到其自有数组;身份交集使用集合,并跳过第一个响应的自交集。
已执行的检查:
- 相关的 domain、application 和 contract 套件:39 个文件,493 项通过,3 项原有跳过。包括空/稳定列表、查询变体、字段添加和移除、稀疏读取、身份证明和延迟文档路径。
- 更广泛的编译后 CLI/MCP/environment、compact schema 和 qlog 验收:7 个文件,65 项通过,1 项原有跳过。在最终状态修复后,两个选中的编译状态 CLI/MCP 用例再次通过(36 个其他用例被取消选择)。
- 最终串行静态/构建/产物门禁:11 项任务通过。类型检查、lint、格式、knip、包元数据和运行时/目录生成均运行。
- 最终文档/目录/格式验证:9 项任务通过;架构守卫在 1,602 个源文件中通过;README 一致性:5 项测试通过。
真实 Gitea 28.2.0 使用了隔离的 SQLite 数据库。一个自有的 Node fetch HAR 记录器捕获了实际的 API 交换,省略了传输凭据:
- 三次交换:空仓库搜索、通过
/user/repos创建,然后再次相同搜索。在完全相同的已认证 Evidence 上,修复前的29e745923将一个已创建的仓库发布为初始状态;最终源码不发布任何内容,并将搜索保持为带有fields-differ的记录。 - 十一次交换:初始的 issue 列表/详情和 topics,PATCH、PUT 和 DELETE,然后是后续读取。状态保留序号 4 之前的两个原始 issue,以及位于序号 3 的原始 topics 文档。File CLI 和默认 stdio MCP 一致;六次 HTTP SDK 重放重现了原始响应。
- 实际 Chromium
capture_browser_scenario:两个事务、八个事件、零丢弃。状态使用记录顺序,提取一个 issue,并保留 list 和 item 计划;File CLI 和默认 stdio MCP 一致。此前的 12.6 MB 真实浏览器捕获也进行了投影,将超大正文以body-unusable记录,而不是解析进状态。自有服务器和浏览器进程已停止。
资源和性能测量¶
一个 CPU 和一个 worker。进程族 RSS 总和每 50 ms 采样一次,可能将共享页计数两次。最终源码套件:39.669 秒墙钟 / 39.486 CPU 秒 / 898.42 MiB 峰值;更广泛的边界:270.171 秒 / 267.136 CPU 秒 / 2,130.78 MiB;最终静态/构建:199.683 秒 / 199.523 CPU 秒 / 4,689.07 MiB;最终实时 HAR 工作流:22.836 秒 / 19.880 CPU 秒 / 1,072.43 MiB;实际浏览器状态工作流:12.734 秒 / 10.941 CPU 秒 / 1,549.80 MiB。qlog 验收通道有意耗尽隔离的解码器堆,并验证 MCP 仍然可用;未发生工作区 OOM。
第一次后续基准测试使用了修复前的 29e745923 和 6ad63bcc2、相同的已完成 Evidence 文件、Node 和 CPU 亲和性。每个修订版一个全新进程,包含一次首次调用和两次热重复;未清除文件系统缓存。两个合成投影任务的完整规范化输出摘要均匹配。
| 任务 | 之前:首次 / 热 (ms) | 之后:首次 / 热 (ms) |
|---|---|---|
| 对 8,000 个模板进行分组(仅 helper) | 320.08 / 81.01–81.46 | 11.89 / 3.88–4.33 |
| 文件到状态投影,2,000 个集合 | 1,321.57 / 732.00–939.57 | 1,268.76 / 781.34–811.05 |
| 文件到状态投影,单个 15,001 字段项 | 657.05 / 494.82–501.19 | 377.78 / 347.62–380.87 |
组合基准测试流程,包括导入、三次辅助调用、六次投影和实时捕获比较:之前为 6.536 秒墙钟时间 / 6.496 CPU 秒 / 370.82 MiB 峰值;之后为 5.077 秒 / 5.056 CPU 秒 / 386.53 MiB。分组和广泛身份推断有所改进;2,000 集合投影的热调用时序存在重叠,且峰值内存未下降。这几次运行并不能确定普遍加速。未测量模型 token 使用量;未运行模型任务评分。最初的外部探测尝试使用了错误的 CLI 位置参数,并假设覆盖范围统计的是记录而非分组工具;这些驱动程序错误在成功的完整运行之前已得到纠正。
没有声称新的 macOS/Windows 运行时、状态提供、AgentEnv 数据面或写效应。仅在无关根写入之后才首次观察到的类型,可能仍然缺少检测其效应所需的更早观察。Item 形状的文档路径和仅删除文档路径仍按规格记录。
合并后写入截止后续¶
基线 3fca2e0ca 包含 #5319 和来自 #5349 的经验证的不可变捕获重用。剩余的审查发现是每种读取类型以及输出组装期间重复的写根解析。一个已获准的前缀/通配符索引现在拥有解析后的写根,并带有每投影的正/负截止缓存。后备类型成员资格被收集一次,取代了另一次计划扫描。旧的线性匹配器已移除。前缀、参数、脱敏根和时间线语义得以保留;未引入跨请求缓存或新权威。
- 源码检查:41 个文件,508 个通过,3 个既有跳过,包括独立的匹配预言机和 12,000 段迭代查找检查。
- 串行静态/构建/产物门禁:11 个任务通过,197.356 秒墙钟时间 / 197.195 CPU 秒 / 4,744.92 MiB 峰值进程族 RSS。
- 重新构建后,两个选定的已编译状态 CLI/MCP 用例均通过。
- 实时 Gitea HAR 工作流和全新的实际 Chromium 捕获再次通过:初始值、已记录的回退值、CLI/默认 stdio 对等性以及六次精确 HTTP 重放。HAR 工作流:22.834 秒墙钟时间 / 19.623 CPU 秒 / 1,067.36 MiB;浏览器工作流:22.858 秒 / 20.912 CPU 秒 / 1,546.59 MiB。自有进程已停止。
使用 1,000 次集合读取和 1,000 次无关写入的同一份完整 Evidence 在单个 CPU 上进行了投影(之前与之后)。两个更大的完整 HAR 输入(3,000/4,000 总记录)被现有的 96 MiB 接纳预算拒绝;保留了该限制。每个修订版一个全新进程,首次调用加一次热重复,文件系统缓存未清除:
| 完整的文件到状态投影 | 主版本之前 | 后续版本 |
|---|---|---|
| 首次调用墙钟时间 / CPU(毫秒) | 1,727.89 / 1,727.36 | 1,244.82 / 1,244.05 |
| 热调用墙钟时间 / CPU(毫秒) | 1,300.84 / 1,300.42 | 624.01 / 623.89 |
| 进程墙钟时间 / CPU(秒),包括导入和两次调用 | 4.690 / 4.363 | 3.370 / 3.062 |
| 采样进程族峰值 RSS(MiB) | 365.84 | 360.03 |
父 Evidence ID 和完整归一化输出摘要完全相同。RSS 采样每 50 毫秒一次,包括后代进程,并可能重复计算共享页面;这几次运行并不能确定普遍内存减少。模型 token 使用量仍未测量。未发生工作区 OOM。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea