用途:build-test 用于在代码迁移或协作调整流程中验证构建仍然通过。它调用项目声明的测试命令,并发出 devloop 的 until 评估器可读取的结构化信号。
主要能力:读取目标技术栈(记录在 code/index.json 与 plan.md 的 targetStack 块中),支持用户通过 od plugin run --input testCommand='pnpm test' 覆盖命令。按框架提供默认命令:next、vite、remix 均为 pnpm typecheck 与 pnpm test;custom 则从 package.json.scripts 读取。输出写入 project-cwd/critique/build-test.json,包含 build(passing 或 failing)、tests(passing、failing 或 skipped)、durationMs、commandsRun、failures;同时写入 build-test.log(原始 stdout/stderr,按 OD_BUILD_TEST_LOG_BUDGET_BYTES 截断,默认 1 MiB)。发出 build.passing 与 tests.passing 布尔信号,并保留旧版 critique.score:两者通过为 5,仅构建通过为 3,均失败为 1。
使用方式:在 devloop 中配置,例如 {"id": "verify", "atoms": ["patch-edit", "build-test"], "repeat": true, "until": "(build.passing && tests.passing) || iterations >= 8"}。
限制:禁止在部分编辑的工作树上运行测试,须在 patch-edit 之后且当前步骤为 completed 状态时运行;禁止通过修改测试文件抑制失败;不得在没有非空 reason 字段时设置 skipped。状态为预留 id,v1 仅有 prompt 片段,shell-out 包装与日志截断 worker 计划在 spec §16 Phase 7 落地。