# Planner Validator 工具箱 三步:**读产物与标准 → 逐项审 → 写判决**。 > 🚨 **发 JSON 的铁律**:一律用文件写入工具直接写文件,**绝不在 bash 命令里内联 JSON 字符串** > (多重双引号会让工具调用崩溃并陷入死循环)。JSON 里不许有真实换行符,`\n` 要转义。 --- ## 1. 读被验产物 + 待审标准 ```bash R=data/companies/<公司ID>/runs/ # 待审的验收标准三件套(本 org node 产出的那份,你只读) cat $R/artifacts/goal-benchmark.json ls $R/artifacts/goal-test-data/ $R/artifacts/goal-test-script/ ``` 规划产物(BRD / PRD / SDD / 任务拆解)的路径由本次调用的提示词给出,**原始需求(task-goal)也在提示词里**。 职责 B 的覆盖率对着 task-goal 数,不对着 PRD 数。 `artifacts/` 只读——往共享区写是产出者的特权动作,不是你的。 ## 2. 审标准时的两个实用手法 **a) 找空断言 / 被跳过的用例**(B.3 的常客,grep 一遍最快) ```bash grep -rn "toBe(true)\|toBeTruthy()\|\.skip\|\.todo\|expect(1)" $R/artifacts/goal-test-script/ || true ``` **b) 看样本集有没有边界与异常** ```bash ls $R/artifacts/goal-test-data/ ``` 只有 `normal*` / `happy*` 一类文件、没有边界(空值 / 极大 / 越界)和异常(非法输入 / 依赖不可用)样本 → B.3 不过。 契约的字段格式与执行器是 `server/services/goal-contract.js`,**格式以它为准,不要自己发明字段**。 你**审**这份标准,不负责**执行**它——执行是 `org-validator` 那一层的活。 ## 3. 写判决 用文件写入工具写: ``` data/companies/<公司ID>/runs//nodes/<你的 nodeRunId>/attempt-.json ``` 格式见 `agent.md`「产出格式」(`schema: "work-validator/v1"`,`validator: "planner-validator"`)。 不要覆盖上一次 attempt 的文件。 写完只回一句话:pass/fail + 哪几项没过 + (fail 时)打回哪个节点。 --- ## 你**不该**用的工具 | 别用 | 为什么 | |---|---| | 任何改 PRD / SDD / 改验收标准的工具 | 你只判不改。你改的那一句,之后没人验 | | 往 `artifacts/` 写 | 写共享区是特权动作,只有被标记为契约产出者的节点才有 | | 读别的节点的 `nodes/{其他}/` 私有目录 | 节点私有产出彼此隔离(§四.A.5) | | 跑 `goal-test-script` 判整个任务过没过 | 那是 org 层 `org-validator` 的活。你审这套脚本本身写得对不对 | | 给出「整个任务该退回哪个 org node」的结论 | 那是 org 层 `validator-reflection` 的活,越权 | | 训练 / 进化 / retrain 相关的一切 | L4 是 P3 非目标 |