Commit cd2066a70174bf048340304155dfed390ad8e63a

Authored by yibo
1 parent 3c12beb3

docs: 校准两处过期状态 —— 27 号阶段状态行、blocker 21 已关闭

两处都是实测校准,不是凭印象改:

1. 27-graph-agent-architecture.md 的状态行落后两个阶段。
   原写「P2 起 📝 设计中/未实现」,实际 P2 的设计已归档在
   docs/done/system-design/27-p2-org-graph.md,P3 主体也已实现
   (27-p3b 自述「P3 主体已实现并提交 c3abf4a 起七轮,719/719 全绿」,
   27-p3-p4 有完整的 §十 实现记录 + 第六轮终验回填)。
   校准为 P0/P1/P2/P3主体 ✅、P4 📝 未实现。

   这一行是别人判断「哪些文档能从 todo 搬去 done」的依据,
   过期会连累后面每一次迁移判断,所以补了一句提醒。

2. 27-p3-p4 的 blocker 21(骨架悬空引用,CI 红)已由 28 号改造顺带关闭。
   实测:六个 id 全部登记在 system/agents/_registry.json;
   template-refs.test.js 4/4 通过(全量 999/999)。
   原文登记为「未修」的第二个隐患(_registry.json 被 usedCount 原地改写)
   也已关闭 —— usedCount 已挪到 data/template-usage.json(27-P3B W13),
   跑完真 CLI E2E 后该文件 git status 干净。
   原始记录保留备查。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs/todo/system-design/27-graph-agent-architecture.md
... ... @@ -2,7 +2,9 @@
2 2  
3 3 > **版本**: v0.3(P0/P1 已实现;Org Graph 建模在 v0.3 修正为 company 级 workflow)
4 4 > **日期**: 2026-08-15
5   -> **状态**: P0 ✅ 已实现(`graph-db.js` + `graph-seed-service.js`,见第七节);**P1 ✅ 已实现**(commit `226489d`,`graph-service.js`);P2 起 📝 设计中/未实现
  5 +> **状态**(2026-08-18 校准,此前这一行落后两个阶段): P0 ✅ 已实现(`graph-db.js` + `graph-seed-service.js`,见第七节);P1 ✅ 已实现(commit `226489d`,`graph-service.js`);**P2 ✅ 已实现**(设计已归档 [27-P2](../../done/system-design/27-p2-org-graph.md));**P3 主体 ✅ 已实现**(`c3abf4a` 起七轮,见 [27-P3/P4](./27-p3-p4-work-graph-console.md) §十 实现记录 + 第六轮终验回填;收尾见 [27-P3B](./27-p3b-real-run-runway.md));**P4 📝 设计中/未实现**([27-P4](./27-p4-parallel-and-artifacts.md) 自述 v0.1 设计阶段)
  6 +>
  7 +> ⚠️ 这一行是别人判断「哪些文档能从 `docs/todo/` 搬去 `docs/done/`」的依据 —— 它过期会连累后面每一次迁移判断,改阶段状态时请顺手更新它。
6 8 > **命名**: 新增 agent id / 表名 / 字段名前先读 [27-NAMING 命名规范](./27-naming-conventions.md)
7 9 > **前置**: [02 四层 Agent 架构](../../done/system-design/02-agent-architecture.md)、[24 公司层架构](../../done/system-design/24-company-layer-architecture.md)、[22 Agent 记忆系统](../../done/system-design/22-agent-memory-system.md)、`server/src/core/devloop/loop-controller.js`(现有 retry-with-reflection 实现)
8 10  
... ...
docs/todo/system-design/27-p3-p4-work-graph-console.md
... ... @@ -904,7 +904,10 @@ org graph: org-planner → org-coder → org-validator
904 904 **为什么这不是「少打了一行日志」**:`org-validator` 的 `tools.md` 退出码表写着「1 = 判决为 fail,照它打印的 `fail_reason` 与 `failures` 走 Step 5」,`coder-validator` 同款。**按提示词照做的 agent 因此拿不到任何可归因的信息**——它只知道「失败了」,不知道是「产物不是 JSON」还是「真的没达标」,而这两者在 §四.D.2.2 里对应完全不同的 `fail_reason` 与不同的回退边。
905 905 **修法**:① 短路分支一律产出一条 failure(形状与正常比对完全一致:`case` / `expected` / `got` / `hint`,`hint` 里带 `reason` + 人话解释),于是 `executeContract` 的 `failures: active.flatMap(...)` 自然带上它们,**json 分支、落盘 verdict、人读输出三处同源**;② 人读输出改成按字段**是否真的存在**分别打,并且**只要有 `reason` 就一定打 `reason` + `detail`**;`test_script` 那行 `exit=... timed_out=...` 只在真起过进程(有 `duration_ms`)时才打,免得短路分支的 `exit=null` 被读成「跑了、返回 null」;③ 判决为 fail 却一条 failure 都没有时,明确打一句「无逐项明细」,而不是留一个空的 `failures:` 标题。
906 906  
907   -21. **骨架悬空引用:目录补了、`_registry.json` 没登记,CI 因此是红的** 🔴 **【现存 blocker,第六轮终验回填】**
  907 +21. **骨架悬空引用:目录补了、`_registry.json` 没登记,CI 因此是红的** ✅ **【已关闭,2026-08-18 由 28 号 Agent 注册表统一顺带扫掉】**
  908 + - **关闭实测**:六个 id(`benchmark-validator` / `testdata-validator` / `brd-planning` / `prd-planning` / `sdd-planning` / `goal-benchmark`)现已全部登记在 `system/agents/_registry.json`;`server/tests/unit/template-refs.test.js` **4/4 通过**(全量 999/999 全绿)。注意本体目录已随 [28 号改造](../../done/system-design/28-agent-registry-unification.md) 从 `system/templates/` 并入 `system/agents/`,且 `_registry.json` **不再是数据源头** —— `seedAgents()` 直接扫目录,registry 只用于按 id 补 `benchmark_score`。
  909 + - **「顺带查到的第二个隐患」也已关闭**:`usedCount` 已从 `_registry.json` 挪到 `data/template-usage.json`(27-P3B W13),`_registry.json` 只留人工维护的基线,跑完真 CLI E2E 后该文件 `git status` 干净。
  910 + - 以下为原始记录,保留备查:
908 911 - **控制操作那条线已关闭**:§四.C 控制操作表 + §六 验收 4 / 15 + §八.13 全部实测通过,见 §八.13 与 §六 验收 4/15。
909 912 - **骨架这条线只做了一半**。做了的:六个本体目录 `system/templates/{benchmark-validator,testdata-validator,brd-planning,prd-planning,sdd-planning,goal-benchmark}/` 已建齐,`graph-seed-service.seedTemplates()`(**按目录扫描**)能把它们 upsert 进 `system_agents`,`work_graph_nodes.system_agent_id` 的外键那一端因此成立——终验用真 server 跑 `org-validator`,`validator.json` 三个节点**原样落库、不再被 `reference` 打回**,这个 blocker 在 DB 这一侧确实消失了。
910 913 没做的:**`system/templates/_registry.json` 里这 6 个 id 一条登记都没有**。而同轮新增的防线 `server/tests/unit/template-refs.test.js` 第三条用例查的正是这个,实跑 **failed**(全量 `npx vitest run` = 718 passed / **1 failed**)。
... ...