Commit 601ed9abbaba3b33a4476c6ac094f7caabea2336

Authored by yibo
1 parent c03ae10b

docs(27-p3-p4): 同步全部交叉引用(前一提交只带了改名,本次补上内容)

前一提交(c03ae10b)的 git add 因命令里混了一个已失效的 pathspec 而整体失败,
只有此前单独 git mv 出去的改名部分被记录下来,实际的引用修正全部漏提交。

补上:docs/README.md 索引(todo 表挪到 done 表 + 顶部状态行)、其余 27 系列
文档里指向该文档的相对链接(todo/ 与 done/ 下深度不同,分别处理)、
system/agents/*/agent.md 与 tools.md 里 cwd 深度 3 的 ../../../../../ 相对引用
(agent-md-refs.test.js 会校验这些链接真实可解析到文件)、_registry.json 的
description 字段、work-graph-templates/README.md、server/ 源码里的设计文档路径注释。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JnCKUFSGvdz4SY7BvYWdMU
docs/README.md
... ... @@ -9,7 +9,7 @@
9 9 判断依据:文档正文的显式「状态」标记(✅ 已完成 / 已实现 vs 📝 设计中 / 未实现)、未勾选的 checklist,以及与代码库实际实现的交叉核对(见各条目备注)。
10 10  
11 11 > **当前主线**:Graph Agent 架构重构([27-graph-agent-architecture.md](./todo/system-design/27-graph-agent-architecture.md))。
12   -> 该系列已完成的阶段文档(P1 / P2 / **P3 收尾 P3C**)移入 `done/`,其余非主线待办在 `todo/future/`。
  12 +> 该系列已完成的阶段文档(P1 / P2 / **P3+P4 执行控制台** / **P3 收尾 P3C** / P3B / P4)移入 `done/`,其余非主线待办在 `todo/future/`。
13 13 > **当前未完成的是**:28-followups。P3B 九条验收已于 2026-09-08 全部验完;P4 已于 2026-09-08 收口;P3/P4「真实路径 smoke 进 CI」的欠账已基本还清,只剩真 LLM(本质限制)与按需 hire 未覆盖。
14 14  
15 15 ## done/
... ... @@ -27,6 +27,7 @@
27 27 | [user-guides/08-base-agent-4-phase-guide.md](./done/user-guides/08-base-agent-4-phase-guide.md) | Base Agent 四阶段使用指南 |
28 28 | [system-design/27-p1-virtual-reference.md](./done/system-design/27-p1-virtual-reference.md) | P1 虚拟引用寻址 — ✅ 已实现(commit `226489d`,`server/services/graph-service.js`):`agent.md` 不再逐公司拷贝,改为 `config.json.systemAgentRef` 引用 + `company-context.md` 承载公司语境 |
29 29 | [system-design/27-p2-org-graph.md](./done/system-design/27-p2-org-graph.md) | P2 Org Graph — ✅ 已实现(`70a4727` + `f20d0d8`):org graph 定位为 company 级 workflow(执行流边),`orggraph-planning` agent 建公司时自动规划并招聘。真实建公司端到端验证通过 |
  30 +| [system-design/27-p3-p4-work-graph-console.md](./done/system-design/27-p3-p4-work-graph-console.md) | P3+P4(原 P4 回退+Loop-Validator 已并入)图执行引擎与执行控制台 — ✅ **2026-09-09 已彻底收口**,移入 `done/`(`c3abf4a` 起七轮实现)。§十「四条硬规矩」第 2 条欠账已还清:`graph-real-chain-smoke.test.js`(零注入、只换掉真 CLI 子进程)进 CI,覆盖 `agent_call`/`subgraph` 两支 + 多节点/回退边/双层熔断三种形状;按需 hire(`resolvePlanningAgentName`)用隔离 worktree + 真 Claude CLI 探针跑通,`workgraph-planning` 真的被按需雇进了一家没预雇过它的真实公司。唯一剩下的是真 LLM 本身进不了 CI 这条本质限制(要额度、分钟级、输出不确定),不算欠账,只能靠隔一段时间人工真跑核实 |
30 31 | [system-design/27-p3c-goal-task-model.md](./done/system-design/27-p3c-goal-task-model.md) | **P3 收尾** goal / task 两级模型 + 控制台任务列表 — ✅ 已完成(2026-08-20):五批实施 + §十七 清尾。含队列 / 并行槽位、`task-planning`、两套任务体系统一、墙钟预算改「只算活跃时长」。**§17.5 是真跑验收** —— 返工闭环第一次由真 agent(不是注入的假 executor)走通 |
31 32 | [system-design/27-p3c-batch3-handover.md](./done/system-design/27-p3c-batch3-handover.md) | 批 3 交接 —— ✅ 已收口(2026-08-20)。**事故记录归档**:一份未经复核的代码被第三方会话提交进 main。留着是因为 §六 那几条多会话协作规则是真踩出来的 |
32 33 | [system-design/38-auth-multi-tenant-isolation.md](./done/system-design/38-auth-multi-tenant-isolation.md) | 登录鉴权 + 公司级多租户隔离 —— ✅ Phase 0/1/2/3 全部完成(2026-08-25)。种子账号 `admin`/`hex1234` + 登录页;全站挂 `requireAuth`(`agent-chat.js` 用 `requireAuthOrInternal` 放行三处服务端自环调用);`company.json` 加 `ownerId`,`canAccessCompany` 是全仓库唯一归属判据,`company.js`/`graph-run.js`/`devloop.js` 分别接入(`graph-run.js` 双挂载点参数形状不同,设计阶段描述不准确,实现时才发现);`okr.js` 因是零导航入口的孤儿页面改挂 `requireAdmin` 而非归属校验。**Phase 3 验证阶段真查出一个漏洞**:`agent-chat.js` 靠 `:agentId` 的 `"companyId:role"` 前缀区分会话归属却从没做过归属校验,任意登录用户可跨租户读别家公司会话,已修复。全量 `vitest` 1433 passed |
... ... @@ -51,7 +52,7 @@
51 52  
52 53 ## todo/(当前主线)
53 54  
54   -Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `done/`**(P1、P2),下面是仍在推进或长期有效的部分。
  55 +Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `done/`**(P1、P2、P3+P4、P3C、P3B、P4),下面是仍在推进或长期有效的部分。
55 56  
56 57 | 文件 | 说明 |
57 58 |------|------|
... ... @@ -60,7 +61,6 @@ Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `d
60 61 | [27-naming-conventions.md](./todo/system-design/27-naming-conventions.md) | **命名规范**。`{作用域}-{职能}`;图节点按层级轴命名;节点名 ≠ 本体名;三种 benchmark 消歧;OKR 正名。新增 agent id / 表名 / 字段名前必读 |
61 62 | [27-e2e-task-execution-flow.md](./todo/system-design/27-e2e-task-execution-flow.md) | 端到端流程总览:建公司 → 下达任务 → org graph 逐节点执行 → work graph 规划与循环 → 验收收敛。含与 DevLoop 既有实现的对应关系分析 |
62 63 | [27-example-dev-company-walkthrough.md](./todo/system-design/27-example-dev-company-walkthrough.md) | 参考场景走查(虚构的「配图工厂」),把架构跑一遍具体的数:各阶段 JSON 形态、成本估算、断点清单 |
63   -| [27-p3-p4-work-graph-console.md](./todo/system-design/27-p3-p4-work-graph-console.md) | P3+P4(原 P4 回退+Loop-Validator 已并入)图执行引擎与执行控制台 — ✅ 已实现(`c3abf4a`)。**仍留 todo 的原因**:§十 末「四条硬规矩」第 2 条那笔欠账**已基本还清**(2026-09-08)——`graph-real-chain-smoke.test.js`(零注入、只换掉真 CLI 子进程)已进 CI,覆盖 `agent_call`/`subgraph` 两支 + 多节点/回退边/双层熔断三种形状;按需 hire(`resolvePlanningAgentName`)2026-09-09 用隔离 worktree + 真 Claude CLI 探针跑通,`workgraph-planning` 真的被按需雇进了一家没预雇过它的真实公司。剩下的只有真 LLM 本身进不了 CI 这一条本质限制(要额度、分钟级、输出不确定,只能靠隔一段时间人工真跑核实,不会有"还清"的一天) |
64 64 | [27-goal-contract-format.md](./todo/system-design/27-goal-contract-format.md) | 验收契约格式(`goal-benchmark` / `goal-test-data` / `goal-test-script` 的产物形态与跨节点传递) |
65 65 | [28-followups.md](./todo/system-design/28-followups.md) | 28 号(Agent 注册表统一)的遗留清单 — 主文档已在 `done/`,这份装没做完的:dream 机制(设计见 29 号,已实现,见下)、`source_kind`(✅已删)/`legacy_path`(不能删)删列、三项「已实施未验证」。任务态清理(✅已实现,见下)。§五 是**已立起来的守卫清单**(别重复造,也别删) |
66 66 | [30-task-delegation-reliability-gaps.md](./todo/system-design/30-task-delegation-reliability-gaps.md) | **任务委派可靠性现状**— 📝 调研记录,非设计方案。DevLoop `runUnit`、Company 招聘装配、Graph 执行三条链路核对结论一致:都是「失败预算耗尽 → 停等人工」,没有「卡住了主动通知人」这一层;DevLoop 当前还默认走 mock,真实 CLI 成功率无实证数据。2026-08-23 追加真实实例并已修:`infra_flake` 原地重跑没有熔断线,真撞上过一次确定性死循环(节点把诊断结论误判成自己的执行结果,反复重跑却从不路由到诊断建议的目标节点);已加 `infra_flake_count` 列 + 硬顶 3 次熔断,连续判 infra_flake 超过硬顶就改判 blocked 交给人工 |
... ... @@ -69,6 +69,7 @@ Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `d
69 69 | [36-prd-agent-methodology-training-feasibility.md](./todo/system-design/36-prd-agent-methodology-training-feasibility.md) | 📝 **调研 + 阶段一/二均已完成**。回应"落地页太单薄是不是该用 Innovator 先训练专业 agent、再用 Dream 持续迭代"——认同方向。**阶段一**:`graph-engine.js` 结算节点后把 `success`/`fail:<reason>` 写进本体 `memory.md`(此前只有人类对话路径会写,Dream 天天空转)。**阶段二**:新建独立试验节点 `prd-methodology-trial` 走真实 Hunt→Digest→Evolve,2 轮收敛(96/97 分,真实基线 50 分),三个真实历史项目反推验证方法论有效;过程中连带修复同一个 2026-08-16 改名批次遗留的 5 处 `innovator`→`org-innovator` 死链(后端两处硬编码、前端"重新训练"按钮、`/api/agent/list` 展示 id 来源的四个 `config.json`),以及 `AgentScaffold` 默认模板一处裸相对路径缺陷。结论:FDE 对方法论类角色确实管用,但收敛速度/验收严谨度依赖任务书显式写明的自纠正要求,非免人工黑盒。环节 3(训练产物 → 雇佣本体转换)尚未开工 |
70 70 | [49-antigravity-inspired-parallel-verification-proposal.md](./todo/system-design/49-antigravity-inspired-parallel-verification-proposal.md) | 📝 **设计讨论,不代表已拍板**(2026-09-04)。对照 Google Antigravity「Teamwork」多智能体框架博客文章,给 27 号 P4「真并行」与 34/35 号「验证严谨度不稳定」两个议题出的方案草稿。**先纠正一个前提**:重读 27-P4 全文后发现阶段 A/B/C 早已全部实现(又一次「文档落后于代码」),当时判断真并行只剩 T2/role 列/`advanceTree` 兄弟子 run 并发三件小事——2026-09-08 收口时又发现这个判断本身有两处误判(role 列其实早就落库、T1 的✅遗漏了 scope 参数的生产接线),三件小事(连同两处误判一起)已全部核实/补齐,见 [27-P4](./done/system-design/27-p4-parallel-and-artifacts.md)。**新提案 A**:借鉴长证明模式的「竞争候选+对抗批评+综合」,区别于现有 `executor-fanout.json` 的分解型 fan-out——需要先有真实场景验证价值,不建议凭空立项,详细设计见 [50 号文档](./todo/system-design/50-competing-candidates-critic-synthesis-design.md)。**新提案 B**:把 35 号提案 D「浏览器关键词命中才要证据」泛化成 benchmark 段全维度默认要求执行级证据(**唯一建议现在推进的部分**);实地核实过把验收路径引导到 `test_script` 段的工作量后**结论是不做**——撞上 `test_script.path` 解析根不含 `org-coder` 实际写代码的项目根这个结构性冲突,改造面远超预期;新增「陷阱注册表」,把 validator 判卷失败的结构化原因喂回 Dream 机制,落点已定案为独立文件 `known_pitfalls.md`(不复用 `memory.md`,避免语义混淆)。建议推进顺序:陷阱注册表最低成本先做,证据泛化次之,竞争候选需要真实场景才立项 |
71 71 | [50-competing-candidates-critic-synthesis-design.md](./todo/system-design/50-competing-candidates-critic-synthesis-design.md) | 📝 **设计草稿,不代表已拍板**(2026-09-04)。49 号文档提案 A 的展开:竞争候选骨架 JSON 形状草稿(`candidate-council.json`,未定案)、命名(按 27-NAMING 节点带前缀/本体不带前缀两轴)、`workgraph-planning` 选型判据方向。**关键设计约束**:critic(评判)与 synthesis(择优/融合)必须拆成两个节点,依据是仓库真实事故——`qa-judge` 早期"评判+终态判决合一"设计导致过一次无限循环(20 次调用/31 分钟才熔断,记录在 `deliverable.json` 的反模式说明里),新骨架延续 `validator-triager`/`benchmark-validator` 已验证的"归因/打分/判定三者分离"范式。**预算风险量化**:N 路候选并行消耗 N 倍预算,且 `checkBudget` 只在批量拾取前查一次,实际可能超支到 `maxConcurrency-1`(默认最多多花 4 次调用)才被拦下,候选数 N 目前代码层没有硬顶 |
  72 +| [51-ceo-autonomous-goal-refill-design.md](./todo/system-design/51-ceo-autonomous-goal-refill-design.md) | 📝 **设计草稿,不代表已拍板**(2026-09-09)。回应"公司能否 7×24 自转"的提问——核实执行层(存活扫描/僵尸 goal 收口/CEO 阻塞任务兜底心跳)已经扎实,真正缺口在决策层:`ceo/heartbeat.md` 与 `tools.md` 的"该提新任务"判断全部要求先有一个 goal/task 存在,没有一条覆盖"公司没有任何 active/draft/planning goal"这种完全空转场景;且 CEO 目前**没有创建 goal 的工具**(`tools.md` 对 `/goals` 只有 GET 示例),`POST /:companyId/goals` 端点存在于路由层但从未暴露给它。设计方案:心跳查询为空时进入"立项模式",先查公司使命(`company-context.md`,默认"待定义"时拒绝立项、转人工)作为立项锚点,用 `created_by:'ceo'` + `split:false`(避免草稿阶段就烧 task-planning token)建草稿 goal,去重后停在 `draft` 等人工 `/dispatch`——分两阶段放权,阶段 B(CEO 自动 enqueue + guardrail)本文档只给方向不实现 |
72 73  
73 74 ## todo/future/(暂缓,非当前重心)
74 75  
... ...
docs/done/system-design/27-p2-org-graph.md
... ... @@ -25,7 +25,7 @@ v0.1-v0.3 把 Org Graph 建模为**陿€æ±‡æŠ¥ç»“æž„**:节点是角色引用ï
25 25 | ç”Ÿæˆæ—¶æœº | å»ºå…¬å¸æ—¶ï¼Œä¸€æ¬¡ | æ¯ä¸ª org node 接到任务时 |
26 26 | èŠ‚ç‚¹æŒ‡å‘ | org node agent(`org-planner` 等) | system agent 引用 |
27 27 | 边的语义 | **执行æµ**:`condition ∈ {success, fail}` | **执行æµ**:åŒå·¦ |
28   -| 执行引擎 | [27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md) çš„åŒä¸€å¥— | åŒå·¦ |
  28 +| 执行引擎 | [27-P3/P4](./27-p3-p4-work-graph-console.md) çš„åŒä¸€å¥— | åŒå·¦ |
29 29  
30 30 **由此带æ¥çš„四处结构性改动**(这也是本次é‡å†™çš„主è¦å†…容):
31 31  
... ... @@ -47,7 +47,7 @@ v0.1-v0.3 把 Org Graph 建模为**陿€æ±‡æŠ¥ç»“æž„**:节点是角色引用ï
47 47  
48 48 ### éžç›®æ ‡
49 49  
50   -- **ä¸åš**图的执行 —— 执行引擎ã€å¯åЍ/æš‚åœ/啿­¥/é‡è¯•ã€SSE 全部属于 [27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md)。P2 åªè´Ÿè´£"把图建出æ¥ã€å­˜å¥½ã€èƒ½è¯»èƒ½ç”»"。
  50 +- **ä¸åš**图的执行 —— 执行引擎ã€å¯åЍ/æš‚åœ/啿­¥/é‡è¯•ã€SSE 全部属于 [27-P3/P4](./27-p3-p4-work-graph-console.md)。P2 åªè´Ÿè´£"把图建出æ¥ã€å­˜å¥½ã€èƒ½è¯»èƒ½ç”»"。
51 51 - **ä¸åš** `company.json.agents[]` 的废弃 —— å®ƒä»æ˜¯"这家公å¸é›‡äº†è°"的真相æºï¼›org graph 回答的是"任务怎么æµè¿‡è¿™äº›äºº",两者并存。
52 52 - **ä¸åš**å­˜é‡å…¬å¸çš„补图 —— è§ Â§å…­ã€‚
53 53 - **ä¸åš** `workgraph-planning` agent 本身的设计 —— 属于 P3。
... ... @@ -95,7 +95,7 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_org_graph_edges_dedupe_active
95 95  
96 96 ### 3.3 å›¾çš„åˆæ³•性约æŸï¼ˆå†™å…¥å‰æ ¡éªŒï¼‰
97 97  
98   -与 work graph çš„æ‰§è¡Œå‰æ ¡éªŒåŒä¸€å¥—规则([27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md) §四.A):
  98 +与 work graph çš„æ‰§è¡Œå‰æ ¡éªŒåŒä¸€å¥—规则([27-P3/P4](./27-p3-p4-work-graph-console.md) §四.A):
99 99  
100 100 1. **无环**(仅针对 `edge_kind='forward'`)—— 三色 DFS,å¤ç”¨ DevLoop `doc-store.js:167` çš„ `hasCycle()` 实现。
101 101 2. **å•一入å£**(✅ å·²å®šæ¡ˆï¼Œè§ [27-REQ](../../todo/system-design/27-requirement.md) R-13)—— å¿…é¡»æ°å¥½æœ‰ä¸€ä¸ªå…¥åº¦ä¸º 0 çš„ forward 节点,任务从这里进入。多入å£ä¼šè®©"任务从哪开始"无法确定,且需è¦ä»»åС入å£å¤šå¸¦ä¸€ä¸ªå‚数。
... ... @@ -183,7 +183,7 @@ if (bootstrap.status === &#39;hired_from_template&#39;) {
183 183  
184 184 ### 4.5 å‰ç«¯
185 185  
186   -**ä¸è‡ªå·±å†™æ¸²æŸ“逻辑** —— org graph 与 work graph åŒæž„,直接å¤ç”¨ [27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md) T3 çš„ç”»å¸ƒç»„ä»¶ï¼ˆå…¶æœ¬èº«åˆæ˜¯æ‰©å±•自既有的 `web/src/components/devloop/UnitsDAG.vue`,已实现 SVG + Kahn 分波布局 + 状æ€ç€è‰² + 点击下钻)。
  186 +**ä¸è‡ªå·±å†™æ¸²æŸ“逻辑** —— org graph 与 work graph åŒæž„,直接å¤ç”¨ [27-P3/P4](./27-p3-p4-work-graph-console.md) T3 çš„ç”»å¸ƒç»„ä»¶ï¼ˆå…¶æœ¬èº«åˆæ˜¯æ‰©å±•自既有的 `web/src/components/devloop/UnitsDAG.vue`,已实现 SVG + Kahn 分波布局 + 状æ€ç€è‰² + 点击下钻)。
187 187  
188 188 这也æ„å‘³ç€ **P2 çš„å‰ç«¯å·¥ä½œä¾èµ– P3 的画布组件先åšå‡ºæ¥**。若想让 P2 独立上线,å¯ä»¥å…ˆåœ¨ Company Dashboard 用一个纯文本的拓扑åºåˆ—表å ä½ï¼ˆ`org-planner → org-coder → org-validator`),等 P3 ç”»å¸ƒå°±ç»ªå†æ›¿æ¢ã€‚
189 189  
... ... @@ -211,7 +211,7 @@ if (bootstrap.status === &#39;hired_from_template&#39;) {
211 211 åŒç†æä¾› `content.json`(`org-planner → org-writer → org-validator`)ã€`ops.json`。三张图**首尾节点åŒå**,
212 212 åªæœ‰ä¸­æ®µæ‰§è¡ŒèŠ‚ç‚¹ä¸åŒâ€”—命åè½´æ˜¯èŠ‚ç‚¹æ‰€åœ¨å›¾çš„å±‚çº§ï¼Œä¸æ˜¯ä¸šåŠ¡é¢†åŸŸï¼ˆ[27-NAMING](../../todo/system-design/27-naming-conventions.md) §3.1)。
213 213  
214   -`dev.json` é‚£ä¸¤æ¡ `fail` 边是 P3 çš„ `fail_reason` 细分路由([27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2):
  214 +`dev.json` é‚£ä¸¤æ¡ `fail` 边是 P3 çš„ `fail_reason` 细分路由([27-P3/P4](./27-p3-p4-work-graph-console.md) §四.D.2.2):
215 215 带 `failReason` 的边按归因结果精确匹é…,ä¸å¸¦ `failReason` çš„é‚£æ¡æ˜¯**兜底边**,
216 216 任何有 `fail` 出边的节点都必须留一æ¡ï¼Œå¦åˆ™å½’因产出图上没有的å–值时会è½åˆ°æ­»è·¯ã€‚
217 217 `content.json` / `ops.json` ç›®å‰åªæœ‰å…œåº•边。
... ...
docs/done/system-design/27-p3c-goal-task-model.md
1 1 # 27-P3C. 公司目标与任务 —— goal / task 两级模型 + 控制台任务列表
2 2  
3   -> **所属**: [27 Graph Agent 架构](../../todo/system-design/27-graph-agent-architecture.md) 的 **P3 收尾**(P3C),直接续 [27-P3/P4 执行控制台](../../todo/system-design/27-p3-p4-work-graph-console.md) §四.B 与 [27-P3B 真跑跑道](./27-p3b-real-run-runway.md)。
  3 +> **所属**: [27 Graph Agent 架构](../../todo/system-design/27-graph-agent-architecture.md) 的 **P3 收尾**(P3C),直接续 [27-P3/P4 执行控制台](./27-p3-p4-work-graph-console.md) §四.B 与 [27-P3B 真跑跑道](./27-p3b-real-run-runway.md)。
4 4 > **日期**: 2026-08-18
5 5 > **状态**: ✅ **已完成并归档**(2026-08-20)。五批全部实施(§十三 ~ §十六),§15.5 / §16.8 的后续项也已全部收掉(§十七)。
6 6 > 138 文件 / 1292 测试全绿,`web:build` 通过。**真跑验收见 §17.5** —— 返工闭环第一次由真 agent(不是注入的假 executor)走通。
... ... @@ -845,7 +845,7 @@ parent_task_id TEXT REFERENCES tasks(id), -- B 的任务链;A 的 depends_
845 845  
846 846 ## 十三、批 1 实施记录(2026-08-18,commit `7f24ef0`)
847 847  
848   -> 体例照 [27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md) §十:**设计正文不改写,只在这里与实现对账**。
  848 +> 体例照 [27-P3/P4](./27-p3-p4-work-graph-console.md) §十:**设计正文不改写,只在这里与实现对账**。
849 849 > 凡本节与前文冲突,**以本节为准** —— 前文是设计时的判断,本节是跑出来的事实。
850 850  
851 851 ### 13.1 落地了什么
... ...
docs/todo/system-design/27-e2e-task-execution-flow.md
... ... @@ -3,7 +3,7 @@
3 3 > **所属**: [27 Graph Agent æž¶æž„](./27-graph-agent-architecture.md) 的跨阶段总览文档,串起 P2(Org Graph)ã€P3/P4(Work Graph 执行)ã€P5(自我进化)。
4 4 > **版本**: v0.1
5 5 > **日期**: 2026-08-15
6   -> **å‰ç½®**: [27-P2 Org Graph è½åœ°](../../done/system-design/27-p2-org-graph.md)ã€[27-P3/P4 Work Graph 执行控制å°](./27-p3-p4-work-graph-console.md)ã€**ä»¥åŠæœ¬æ–‡æ¡£æœ€é‡è¦çš„å‚考æº** `docs/prd/newfunction/_spec/`(DevLoop 的完整 MVCP 规格,尤其 `loops-overview.md` / `loops-l1.md` / `loops-l2.md` / `loops-l3.md` / `sdd-process.md` / `plan-cost-concurrency.md`)。
  6 +> **å‰ç½®**: [27-P2 Org Graph è½åœ°](../../done/system-design/27-p2-org-graph.md)ã€[27-P3/P4 Work Graph 执行控制å°](../../done/system-design/27-p3-p4-work-graph-console.md)ã€**ä»¥åŠæœ¬æ–‡æ¡£æœ€é‡è¦çš„å‚考æº** `docs/prd/newfunction/_spec/`(DevLoop 的完整 MVCP 规格,尤其 `loops-overview.md` / `loops-l1.md` / `loops-l2.md` / `loops-l3.md` / `sdd-process.md` / `plan-cost-concurrency.md`)。
7 7 > **需求æºå¤´**: [27-REQ 原始需求](./27-requirement.md) —— 本文档是对那些原è¯çš„结构化转述,原文以那份为准。
8 8 > **é…套**: [27-EXAMPLE å‚考场景走查](./27-example-dev-company-walkthrough.md) —— 本文档讲机制,那份文档把机制在一家具体公å¸ä¸Šè·‘䏀鿕°ã€‚两份对照ç€è¯»ã€‚
9 9  
... ... @@ -31,7 +31,7 @@
31 31 - **æˆæœ¬ä¸Žå¹¶å‘预算的数字版**(`plan-cost-concurrency.md`):æ¯ä¸ª agent æ¯æ¬¡è°ƒç”¨çš„ token ä¼°ç®—ã€å…¸åž‹é¡¹ç›®æ€»æˆæœ¬ï¼ˆä¸­é¡¹ç›® ≈ 410K token ≈ $4.8)ã€ä¸‰å±‚å¹¶å‘上é™ã€å¢™é’Ÿä¼°ç®—ã€6 个监控指标åŠå‘Šè­¦é˜ˆå€¼ã€‚
32 32 - **å‰ç«¯ç»„件全集**(`sdd-view.md` V-1..V-11),且**代ç å·²ç»å­˜åœ¨**:`web/src/components/devloop/` 下 8 ä¸ªç»„ä»¶ï¼Œå« `UnitsDAG.vue`(SVG + Kahn 分波布局的 DAG 渲染器)ã€`LiveAgentStream.vue`(带 Last-Event-ID 断线é‡è¿žçš„ SSE 消费)ã€`UnitDrawer.vue`(节点详情抽屉)。
33 33  
34   -**这直接影å“你的问题「这个æµç¨‹æ˜¯å¦æ˜¯è¿™æ ·å®žçŽ°çš„ã€â€”—答案是:在"一家写代ç çš„å…¬å¸"这个具体场景下,是的,而且已ç»å®žçŽ°äº†å¤§åŠã€‚** `loop-controller.js` çš„ `runProject()` å·²å®Œæ•´å®žçŽ°ï¼ˆä¸æ˜¯æˆ‘在 [27-P3/P4](./27-p3-p4-work-graph-console.md) 文档里写的 501,那æ¡é™ˆè¿°å·²è¿‡æœŸï¼Œè§ §ä¹ï¼‰ï¼ŒåŒ…å« Kahn 拓扑分波ã€L2 闸门ã€Integratorã€Triager 四分支调度ã€é¢„算熔断ã€SSE 埋点。
  34 +**这直接影å“你的问题「这个æµç¨‹æ˜¯å¦æ˜¯è¿™æ ·å®žçŽ°çš„ã€â€”—答案是:在"一家写代ç çš„å…¬å¸"这个具体场景下,是的,而且已ç»å®žçŽ°äº†å¤§åŠã€‚** `loop-controller.js` çš„ `runProject()` å·²å®Œæ•´å®žçŽ°ï¼ˆä¸æ˜¯æˆ‘在 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 文档里写的 501,那æ¡é™ˆè¿°å·²è¿‡æœŸï¼Œè§ §ä¹ï¼‰ï¼ŒåŒ…å« Kahn 拓扑分波ã€L2 闸门ã€Integratorã€Triager 四分支调度ã€é¢„算熔断ã€SSE 埋点。
35 35  
36 36 ### 结论 2:DevLoop 就是你这套架构的一个「硬编ç å®žä¾‹ã€
37 37  
... ... @@ -90,7 +90,7 @@ P2 å·²ç»è®¾è®¡äº†ï¼š`system/org-graph-templates/{dev,content,ops}.json` 模æ¿å
90 90  
91 91 ### 阶段 4 · 第一个 org node(planner)调 planning-work-graph subagent 规划自己的 work graph
92 92  
93   -**状æ€**:📠概念已在 27 å·æ–‡æ¡£ §3.4 å®šä¹‰ï¼Œæ‰§è¡Œå¼•æ“Žè§ [27-P3/P4](./27-p3-p4-work-graph-console.md),**但 planning agent 本身未设计**
  93 +**状æ€**:📠概念已在 27 å·æ–‡æ¡£ §3.4 å®šä¹‰ï¼Œæ‰§è¡Œå¼•æ“Žè§ [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md),**但 planning agent 本身未设计**
94 94  
95 95 ä½ ä¸¾çš„ä¾‹å­ `brd-planning → prd-planning → sdd-planning → benchmark → testdata → planner-validator → loop-validator`,与 DevLoop 的实际链路高度é‡åˆï¼š
96 96  
... ... @@ -212,7 +212,7 @@ edge_kind TEXT NOT NULL DEFAULT &#39;forward&#39; CHECK (edge_kind IN (&#39;forward&#39;,&#39;back
212 212  
213 213 汇报关系若ä»éœ€è¦ï¼Œé™çº§ä¸º `org_graph_nodes` 上的一个å¯ç©ºå±žæ€§ï¼ˆ`reports_to_node_id`),ä¸å†æ˜¯å›¾çš„主干语义。
214 214  
215   -2. **两层图的递归关系**(å¤ç”¨ [27-P3/P4](./27-p3-p4-work-graph-console.md) 已有的 `parent_node_id`):
  215 +2. **两层图的递归关系**(å¤ç”¨ [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 已有的 `parent_node_id`):
216 216  
217 217 ```
218 218 Org Graph(company 级 workflow,orggraph-planning å»ºå…¬å¸æ—¶ç”Ÿæˆï¼‰
... ... @@ -376,10 +376,10 @@ RESEARCH → PLAN → EXECUTE → VERIFY
376 376  
377 377 | # | 文档 | 原错误陈述 | 事实 | 修订结果 |
378 378 |---|---|---|---|---|
379   -| 1 | [27-P2](../../done/system-design/27-p2-org-graph.md) §ä¹ã€[27-P3/P4](./27-p3-p4-work-graph-console.md) Â§ä¹ | "P1 ç›®å‰ä»æ˜¯è®¾è®¡ç¨¿ï¼Œæœªå®žçŽ°ï¼Œ`graph-service.js` å°šä¸å­˜åœ¨" | **P1 已实现并æäº¤**(commit `226489d`),`server/services/graph-service.js` 已存在,é…套测试 `graph-service.test.js` / `agent-manager-p1.test.js` å‡åœ¨ | **✅ 已改**。27-P2 文件头「å‰ç½®ã€å·²å†™æ˜Žã€ŒP1 虚拟引用寻å€å·²å®žçŽ°ï¼ˆcommit `226489d`)ã€ï¼›27-P3/P4 §ä¹ã€Œä¸Ž P1ã€æ¡å†™æ˜Žã€Œæ— ç›´æŽ¥ä¾èµ–,已实现(commit `226489d`)〠|
380   -| 2 | [27-P3/P4](./27-p3-p4-work-graph-console.md) §三.1 | "`runProject` ç›®å‰ç›´æŽ¥ 501" | **已完整实现**(`loop-controller.js:576`ï¼‰ï¼Œå« Kahn 分波ã€L2 闸门ã€Triager 四分支ã€é¢„算熔断 | **✅ 已改**。27-P3/P4 §三.1 现为「`runProject()`(行 576,**已完整实现**…)ã€ï¼Œå¹¶è¿½åŠ äº†ã€Œæ³¢å†…å®žé™…æ˜¯ä¸²è¡Œã€çš„补充观察 |
  379 +| 1 | [27-P2](../../done/system-design/27-p2-org-graph.md) §ä¹ã€[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) Â§ä¹ | "P1 ç›®å‰ä»æ˜¯è®¾è®¡ç¨¿ï¼Œæœªå®žçŽ°ï¼Œ`graph-service.js` å°šä¸å­˜åœ¨" | **P1 已实现并æäº¤**(commit `226489d`),`server/services/graph-service.js` 已存在,é…套测试 `graph-service.test.js` / `agent-manager-p1.test.js` å‡åœ¨ | **✅ 已改**。27-P2 文件头「å‰ç½®ã€å·²å†™æ˜Žã€ŒP1 虚拟引用寻å€å·²å®žçŽ°ï¼ˆcommit `226489d`)ã€ï¼›27-P3/P4 §ä¹ã€Œä¸Ž P1ã€æ¡å†™æ˜Žã€Œæ— ç›´æŽ¥ä¾èµ–,已实现(commit `226489d`)〠|
  380 +| 2 | [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §三.1 | "`runProject` ç›®å‰ç›´æŽ¥ 501" | **已完整实现**(`loop-controller.js:576`ï¼‰ï¼Œå« Kahn 分波ã€L2 闸门ã€Triager 四分支ã€é¢„算熔断 | **✅ 已改**。27-P3/P4 §三.1 现为「`runProject()`(行 576,**已完整实现**…)ã€ï¼Œå¹¶è¿½åŠ äº†ã€Œæ³¢å†…å®žé™…æ˜¯ä¸²è¡Œã€çš„补充观察 |
381 381 | 3 | [27-P2](../../done/system-design/27-p2-org-graph.md) §4.1 | æè®®å»ºéƒ¨åˆ†å”¯ä¸€ç´¢å¼• `idx_org_graph_nodes_company_role_active`(带 `WHERE status='active'`),但没说è¦å…ˆ DROP 旧索引 | **`graph-service.js` å·²ç»å»ºäº†å…¨é‡å”¯ä¸€ç´¢å¼• `idx_org_graph_nodes_company_role`**(无 WHERE),必须先 DROP | **✅ 已改且已è½åœ°ä»£ç **。27-P2 §4.1 çš„ SQL 现以 `DROP INDEX IF EXISTS idx_org_graph_nodes_company_role;` 开头;`graph-db.js:59-60` å·²å®žçŽ°è¿™æ¡ DROP + é‡å»º |
382   -| 4 | [27-P3/P4](./27-p3-p4-work-graph-console.md) §四.B.2ã€Â§äº” T3 | 把"手写分层布局算法,ä¸å¼•入图形库"当作**æ–°**å·¥ä½œé‡ | `web/src/components/devloop/UnitsDAG.vue` **已实现** SVG + Kahn 分波布局 | **✅ 已改**。27-P3/P4 §三.5 新增「å‰ç«¯ DAG 已实现,扩展而éžé‡å†™ã€ä¸€èŠ‚ï¼›Â§å››.B.2 与 §五 T3 凿”¹ä¸ºã€Œ**扩展 `UnitsDAG.vue`**ã€ï¼Œå¹¶æŠŠæ–°å¢žå·¥ä½œé‡æ”¶çª„到「subgraph è§’æ ‡ + backward 曲线路由 + 循环徽标ã€ä¸‰å— |
  382 +| 4 | [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.B.2ã€Â§äº” T3 | 把"手写分层布局算法,ä¸å¼•入图形库"当作**æ–°**å·¥ä½œé‡ | `web/src/components/devloop/UnitsDAG.vue` **已实现** SVG + Kahn 分波布局 | **✅ 已改**。27-P3/P4 §三.5 新增「å‰ç«¯ DAG 已实现,扩展而éžé‡å†™ã€ä¸€èŠ‚ï¼›Â§å››.B.2 与 §五 T3 凿”¹ä¸ºã€Œ**扩展 `UnitsDAG.vue`**ã€ï¼Œå¹¶æŠŠæ–°å¢žå·¥ä½œé‡æ”¶çª„到「subgraph è§’æ ‡ + backward 曲线路由 + 循环徽标ã€ä¸‰å— |
383 383  
384 384 ### æ­¤å¤–å»ºè®®ï¼ˆå¤æ ¸ç»“论)
385 385  
... ... @@ -396,7 +396,7 @@ RESEARCH → PLAN → EXECUTE → VERIFY
396 396  
397 397 | 原建议 | 为什么作废 | 被什么å–代 |
398 398 |---|---|---|
399   -| **27-P3/P4:补 `node_kind='org_node'`** —— å³åœ¨èŠ‚ç‚¹è¡¨ä¸Šå¼€ä¸€ä¸ªä¸“é—¨è¡¨ç¤ºã€Œè¿™æ˜¯ä¸ª org 节点ã€çš„æžšä¸¾å€¼ | å®ƒçš„å‰ææ˜¯ã€Œorg graph å’Œ work graph 是两ç§ä¸åŒçš„东西,引擎è¦é èŠ‚ç‚¹ä¸Šçš„ä¸€ä¸ªæ ‡è®°åŽ»åˆ†è¾¨ã€ã€‚**[27-REQ](./27-requirement.md) R-15.4 æŽ¨ç¿»äº†è¿™ä¸ªå‰æ**:两层图是åŒä¸€ç§ä¸œè¥¿åœ¨ä¸åŒå±‚级的递归,引擎泛化åŽ**ä¸ä¸ºå®ƒä»¬å„写一套**,也就ä¸éœ€è¦åœ¨èŠ‚ç‚¹ç²’åº¦ä¸ŠåŒºåˆ†å±‚çº§ | **`graph_runs.graph_kind IN ('org','work')`**([27-P3/P4](./27-p3-p4-work-graph-console.md) §四.A.2ï¼‰ã€‚å±‚çº§ä¿¡æ¯æŒ‚在**è¿è¡Œæ—¶çš„ run 上**ï¼Œä¸æŒ‚在定义层的节点上;`graph_run_nodes.def_node_id` 按所属 run çš„ `graph_kind` 解释到 `org_graph_nodes` 还是 `work_graph_nodes`。<br>节点粒度上真正存在的枚举是**å¦ä¸€ä¸ªä¸œè¥¿**——`node_kind IN ('agent_call','subgraph')`(§四.D.0),它区分的是**执行语义**(调一次 agent / 起一张å­å›¾å¹¶ç­‰å®ƒæ”¶æ•›ï¼‰ï¼Œ**䏿˜¯**图的层级。org graph 的节点æ°å¥½å…¨éƒ½æ˜¯ `subgraph`ï¼Œä½†è¿™æ˜¯æŽ¨è®ºï¼Œä¸æ˜¯å®šä¹‰ |
  399 +| **27-P3/P4:补 `node_kind='org_node'`** —— å³åœ¨èŠ‚ç‚¹è¡¨ä¸Šå¼€ä¸€ä¸ªä¸“é—¨è¡¨ç¤ºã€Œè¿™æ˜¯ä¸ª org 节点ã€çš„æžšä¸¾å€¼ | å®ƒçš„å‰ææ˜¯ã€Œorg graph å’Œ work graph 是两ç§ä¸åŒçš„东西,引擎è¦é èŠ‚ç‚¹ä¸Šçš„ä¸€ä¸ªæ ‡è®°åŽ»åˆ†è¾¨ã€ã€‚**[27-REQ](./27-requirement.md) R-15.4 æŽ¨ç¿»äº†è¿™ä¸ªå‰æ**:两层图是åŒä¸€ç§ä¸œè¥¿åœ¨ä¸åŒå±‚级的递归,引擎泛化åŽ**ä¸ä¸ºå®ƒä»¬å„写一套**,也就ä¸éœ€è¦åœ¨èŠ‚ç‚¹ç²’åº¦ä¸ŠåŒºåˆ†å±‚çº§ | **`graph_runs.graph_kind IN ('org','work')`**([27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.A.2ï¼‰ã€‚å±‚çº§ä¿¡æ¯æŒ‚在**è¿è¡Œæ—¶çš„ run 上**ï¼Œä¸æŒ‚在定义层的节点上;`graph_run_nodes.def_node_id` 按所属 run çš„ `graph_kind` 解释到 `org_graph_nodes` 还是 `work_graph_nodes`。<br>节点粒度上真正存在的枚举是**å¦ä¸€ä¸ªä¸œè¥¿**——`node_kind IN ('agent_call','subgraph')`(§四.D.0),它区分的是**执行语义**(调一次 agent / 起一张å­å›¾å¹¶ç­‰å®ƒæ”¶æ•›ï¼‰ï¼Œ**䏿˜¯**图的层级。org graph 的节点æ°å¥½å…¨éƒ½æ˜¯ `subgraph`ï¼Œä½†è¿™æ˜¯æŽ¨è®ºï¼Œä¸æ˜¯å®šä¹‰ |
400 400  
401 401 > âš ï¸ **ä¸è¦ç…§è¿™æ¡ä½œåºŸå»ºè®®åŽ»åŠ å­—æ®µ**。设计里ä¸å­˜åœ¨ `node_kind='org_node'` 这个å–值,加了会与 `graph_kind` å½¢æˆä¸¤å¥—互相矛盾的层级标记,且 `node_kind` çš„ CHECK 约æŸï¼ˆ`IN ('agent_call','subgraph')`)会直接拒ç»å®ƒã€‚
402 402  
... ...
docs/todo/system-design/27-example-dev-company-walkthrough.md
... ... @@ -70,7 +70,7 @@
70 70 边是 `success` / `fail` 执行æµè¾¹ï¼Œä¸Ž work graph çš„è¾¹å®Œå…¨åŒæž„——**åŒä¸€å¥— schemaã€åŒä¸€ä¸ªæ‰§è¡Œå¼•擎ã€åŒä¸€ä¸ªæŽ§åˆ¶å° UI 在两层å¤ç”¨**。
71 71  
72 72 > ä¸Šé¢æ˜¯ **P2 å½¢æ€**(fail åªæœ‰ä¸€æ¡å…œåº•边)。P3 给边加了å¯ç©ºçš„ `fail_reason`
73   -> ([27-P3/P4](./27-p3-p4-work-graph-console.md) §四.D.2.2),`system/org-graph-templates/dev.json` 的骨架因此
  73 +> ([27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2),`system/org-graph-templates/dev.json` 的骨架因此
74 74 > å¤šä¸€æ¡ `org-validator --fail[input_underspecified]--> org-planner`:归因判定是"规划给的约æŸä¸å¤Ÿ"æ—¶é€€å›žé‡æ–°è§„划,
75 75 > 其余一切情况ä»èµ°è¿™é‡Œç”»çš„è¿™æ¡æ—  `fail_reason` 的兜底边退回 `org-coder`。本文åŽç»­æµç¨‹åªç”¨åˆ°å…œåº•边,ä¸å—å½±å“。
76 76  
... ... @@ -178,7 +178,7 @@ brd-planning → prd-planning → sdd-planning ─┬→ goal-test-data ──â”
178 178 ```
179 179  
180 180 - **fan-out**:三个 unit æ— ä¾èµ–,并行(DevLoop çš„ `_groupUnitsByWave()` Kahn 分波已实现,🔴 ä½†æ³¢å†…ç›®å‰æ˜¯ä¸²è¡Œçš„,`loop-controller.js:609` 注释 `// 串行跑`)
181   -- **fan-in**:`integrate` èŠ‚ç‚¹ç­‰ä¸‰æ¡æ”¯çº¿å…¨ç»¿æ‰èƒ½è¿›å…¥ `ready`(多入边 = 汇åˆç‚¹ï¼Œå…¨éƒ¨æ»¡è¶³æ‰æŽ¨è¿›ï¼Œ[27-P3/P4](./27-p3-p4-work-graph-console.md) §D.1)
  181 +- **fan-in**:`integrate` èŠ‚ç‚¹ç­‰ä¸‰æ¡æ”¯çº¿å…¨ç»¿æ‰èƒ½è¿›å…¥ `ready`(多入边 = 汇åˆç‚¹ï¼Œå…¨éƒ¨æ»¡è¶³æ‰æŽ¨è¿›ï¼Œ[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §D.1)
182 182 - æ¯ä¸ª `unittest` 失败 → 打回对应的 unit é‡å†™ = **L1 循环**,`retry_budget=5`
183 183  
184 184 **å‡è®¾ `integration-test` 失败了**:`html-render` 拿到的分段结构和 `md-parser` 产出的ä¸ä¸€è‡´ã€‚
... ...
docs/todo/system-design/27-goal-contract-format.md
1 1 # 27-T0. 验收契约格式 —— `acceptance.json` 与执行器
2 2  
3   -> **所属**: [27-P3/P4](./27-p3-p4-work-graph-console.md) §五 **阶段 0**(T0),需求源头 [27-REQ](./27-requirement.md) R-15.6
  3 +> **所属**: [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §五 **阶段 0**(T0),需求源头 [27-REQ](./27-requirement.md) R-15.6
4 4 > **实现**: `server/services/goal-contract.js`
5 5 > **配套**: [27-E2E](./27-e2e-task-execution-flow.md) §十一(三个验收产出节点)、`docs/prd/newfunction/_spec/sdd-model.md` M-6/M-7/M-8(形态来源)
6 6 > **日期**: 2026-08-16(2026-08-17 R19-B:契约落点归并到 `tasks/{taskId}/` 并进产物索引,见 §一 / §八)
... ... @@ -9,7 +9,7 @@
9 9  
10 10 ## 〇、这份文档定死什么、放开什么
11 11  
12   -[27-P3/P4](./27-p3-p4-work-graph-console.md) §八.9 给的边界很明确——阶段 0 的契约格式一旦定错,阶段 A 的 schema 要返工,所以
  12 +[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §八.9 给的边界很明确——阶段 0 的契约格式一旦定错,阶段 A 的 schema 要返工,所以
13 13  
14 14 > 先把**存储位置**和**与 `output_ref` / `artifacts/` 的关联方式**定死,格式内部细节允许后续演进。
15 15  
... ... @@ -30,7 +30,7 @@
30 30  
31 31 ## 一、存储位置(稳定面)
32 32  
33   -沿用 [27-P3/P4](./27-p3-p4-work-graph-console.md) §四.A.5 已定的产物布局,本文档补上 `verdicts/` 这一格;契约本体按 [27-P4](../../done/system-design/27-p4-parallel-and-artifacts.md) §4.6 的目录约定归并到 `tasks/{taskId}/`(**R19-B**):
  33 +沿用 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.A.5 已定的产物布局,本文档补上 `verdicts/` 这一格;契约本体按 [27-P4](../../done/system-design/27-p4-parallel-and-artifacts.md) §4.6 的目录约定归并到 `tasks/{taskId}/`(**R19-B**):
34 34  
35 35 ```
36 36 data/companies/{cid}/
... ... @@ -98,7 +98,7 @@ tasks/{taskId}/acceptance.json ─readContract┼──▶ executeContract ─
98 98  
99 99 ## 二bis、接进生产路径:为什么是 agent 工具层,不是引擎钩子(R5-F3)
100 100  
101   -T0 交付后有四轮时间里,全仓库唯一提到 `goal-contract.js` 的是 `graph-engine.js:331` 的一句注释——实现完整、零调用方、零单测,[27-P3/P4](./27-p3-p4-work-graph-console.md) §六 验收 1 从未被执行过。接线时有两个位置可选,选了后者:
  101 +T0 交付后有四轮时间里,全仓库唯一提到 `goal-contract.js` 的是 `graph-engine.js:331` 的一句注释——实现完整、零调用方、零单测,[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §六 验收 1 从未被执行过。接线时有两个位置可选,选了后者:
102 102  
103 103 | | ① 引擎在节点收尾时自动跑 | ② **validator agent 通过工具(CLI)调用** ← 选这个 |
104 104 |---|---|---|
... ...
docs/todo/system-design/27-graph-agent-architecture.md
... ... @@ -2,7 +2,7 @@
2 2  
3 3 > **版本**: v0.3(P0/P1 已实现;Org Graph 建模在 v0.3 修正为 company 级 workflow)
4 4 > **日期**: 2026-08-15
5   -> **状态**(2026-09-08 校准): 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) §十 实现记录);**P3 收尾 ✅ 已完成并归档**([27-P3C](../../done/system-design/27-p3c-goal-task-model.md) 五批 + §十七 清尾,2026-08-20 真跑走通返工闭环);**P3B 真跑跑道 ✅ 九条验收全部验完**([27-P3B](../../done/system-design/27-p3b-real-run-runway.md) §六quater,2026-09-08 隔离 worktree 真跑验掉最后一条验收 9:org 层回退边真的指向了 subgraph 节点);**P4 ✅ 已彻底收口**(2026-09-08,[27-P4](../../done/system-design/27-p4-parallel-and-artifacts.md) 阶段 A/B/C 全部完成,仅 T5 账户欠费门因外部计费接口未接而悬置)
  5 +> **状态**(2026-09-08 校准): 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](../../done/system-design/27-p3-p4-work-graph-console.md) §十 实现记录);**P3 收尾 ✅ 已完成并归档**([27-P3C](../../done/system-design/27-p3c-goal-task-model.md) 五批 + §十七 清尾,2026-08-20 真跑走通返工闭环);**P3B 真跑跑道 ✅ 九条验收全部验完**([27-P3B](../../done/system-design/27-p3b-real-run-runway.md) §六quater,2026-09-08 隔离 worktree 真跑验掉最后一条验收 9:org 层回退边真的指向了 subgraph 节点);**P4 ✅ 已彻底收口**(2026-09-08,[27-P4](../../done/system-design/27-p4-parallel-and-artifacts.md) 阶段 A/B/C 全部完成,仅 T5 账户欠费门因外部计费接口未接而悬置)
6 6 >
7 7 > ⚠️ 这一行是别人判断「哪些文档能从 `docs/todo/` 搬去 `docs/done/`」的依据 —— 它过期会连累后面每一次迁移判断,改阶段状态时请顺手更新它。
8 8 > **命名**: 新增 agent id / 表名 / 字段名前先读 [27-NAMING 命名规范](./27-naming-conventions.md)
... ... @@ -119,7 +119,7 @@ system/agents/{agentId}/
119 119 4. **回退边必须显式经过 loop-validator 节点**——即"节点A --fail--> loop-validator --> 节点B",而不是"节点A --fail(隐藏回退属性)--> 节点B"。这是画图时的**结构要求**,不是引擎运行时才附加的隐藏逻辑。
120 120 5. **执行前结构校验**:图规划完成后、进入执行前,引擎做一次静态校验——任何边如果目标节点在图中已存在其他指向它的边(即会构成"回到历史节点"),但没有经过 loop-validator 节点,直接拒绝这张图,不进入执行。类比现有 `npm run spec:check` 的"结构先校验,再允许跑"模式。这是对"planning agent 应该自觉画上 validator"这条规则的**引擎级兜底**,防止规划疏漏导致死循环绕过审计。
121 121  
122   -> ⚠️ **上面第 4、5 点已被 [27-P3/P4](./27-p3-p4-work-graph-console.md) v0.3 §四.D.2.1 改写**:`loop_validator` 节点由「回退边必须经过」的**强制结构要求**降级为**可选增强**(理由:org graph 是 `orggraph-planning` 生成的「这家公司有哪些角色」,往里塞基础设施节点会污染这个语义,而引擎泛化后两层用同一套校验)。熔断改由**引擎无条件的整数计数**承担,落地的写入前校验是**五项**:`acyclic` / `single-entry` / `reachable` / `backward-labeled` / `fail-fallback-edge`——**没有一项要求经过 loop-validator**。本节保留原文作为设计演进记录,实现以 27-P3/P4 为准。
  122 +> ⚠️ **上面第 4、5 点已被 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) v0.3 §四.D.2.1 改写**:`loop_validator` 节点由「回退边必须经过」的**强制结构要求**降级为**可选增强**(理由:org graph 是 `orggraph-planning` 生成的「这家公司有哪些角色」,往里塞基础设施节点会污染这个语义,而引擎泛化后两层用同一套校验)。熔断改由**引擎无条件的整数计数**承担,落地的写入前校验是**五项**:`acyclic` / `single-entry` / `reachable` / `backward-labeled` / `fail-fallback-edge`——**没有一项要求经过 loop-validator**。本节保留原文作为设计演进记录,实现以 27-P3/P4 为准。
123 123  
124 124 ### 3.5 Loop-Validator:死循环兜底
125 125  
... ... @@ -229,8 +229,8 @@ CREATE TABLE work_graph_edges (
229 229 | **P0 地基** ✅ | 建表 + 现有数据迁移,不改变任何现有执行路径 | `system_agents`/`org_graph_*` 表;把现有 `system/agents/` + `system/templates/` 目录扫描导入为种子数据(`system_agents` 行,`scope` 按当前所属推断) | 迁移脚本跑完,`system_agents` 表行数与现有 agent+模板目录数一致(**实际行数与本文档最初估计不同,见第七节**);现有 `company-service.js` 行为不变(并行只读验证,已确认零改动) |
230 230 | **P1 虚拟引用** | 停止文件拷贝,改为引用 | 改造 `AgentManager.getAgentConfig()` + `PromptBuilder.build()` 支持 `(agentId, companyId)` 寻址;`company-service.hire()` 改为创建 org_graph 引用节点而非 `_copyTemplate()`。细化需求与设计见 [27-P1 虚拟引用寻址](../../done/system-design/27-p1-virtual-reference.md) | 新雇佣的 agent 不再产生文件拷贝,调用时能正确拼装公共+私有上下文;旧公司(仍是拷贝模式)继续可跑,不强制迁移存量数据 |
231 231 | **P2 Org Graph** | `company.json.agents[]` 迁移为图结构 | `org_graph_nodes`/`edges` 落地;HR/CEO 招聘走新表。细化需求与设计见 [27-P2 Org Graph 落地](../../done/system-design/27-p2-org-graph.md) | 现有 Company Dashboard 前端能正确读出 org graph 并渲染(哪怕暂时按列表展示) |
232   -| **P3+P4 图执行引擎与执行控制台**(**两个 Phase 已合并**) | **一套引擎同时驱动 org graph 与 work graph**(R-15.4 引擎泛化),带回退与熔断 | 定义层 `work_graphs`/`work_graph_nodes`/`work_graph_edges` + **两层共用的运行时层** `graph_runs`/`graph_run_nodes`/`graph_run_loop_records`(共五张新表);`graph-engine.js` 的 `advanceOne(runId)` 幂等推进原语 + 两种 node executor(`agent_call` / `subgraph`);五个控制操作(启动 / 下一步 / 暂停 / 停止 / 重试)× 手动·自动两种模式;`GraphConsole.vue` 执行控制台页面;`workgraph-planning` agent + 用户→公司任务入口。细化需求与设计见 [27-P3/P4 Work Graph 执行控制台](./27-p3-p4-work-graph-console.md) **v0.3**,落地切成**五个可独立验收的阶段**(0 验收契约 / A 引擎地基 / B 回退熔断 / C 控制台 / D 规划闭环) | 见该文档 §六 的 17 条。**核心验收点是第 6 条**:一张 `graph_kind='org'` 的图与一张 work graph 用**同一套端点、同一条代码路径**跑通「手动逐步 / 自动跑完 / 暂停恢复 / 停止」;外加第 8 条「总是失败的节点第 4 次 `force_terminated` 收敛到 `blocked`」、第 17 条「一句自然语言任务两层跑到 `completed`」 |
233   -| ~~**P4 回退 + Loop-Validator**~~ | **已并入上一行**,不再单列 | 合并理由见 [27-P3/P4](./27-p3-p4-work-graph-console.md) §二:执行引擎一旦要支持「暂停/单步/停止/重试」这种可被外部随时打断的控制语义,「先做单向、再加回退」会让第一版状态机设计得过窄,P4 加回退时必然回来重改数据模型和主循环。**两处定案变更**:① 熔断改为**引擎无条件做的整数计数**(单边 `loop_count > 3` + run 级 `backward_count > 5` 双层硬顶),不依赖 LLM,`loop_validator` 节点由「强制」降级为**可选增强**;② 结构校验从四项扩到**五项**,新增 `fail-fallback-edge`(有 `fail` 出边的节点必须留一条 `fail_reason IS NULL` 兜底边),org / work 两层都加 | 同上 |
  232 +| ~~**P3+P4 图执行引擎与执行控制台**~~ ✅(**两个 Phase 已合并**,2026-09-09 移入 `done/`) | **一套引擎同时驱动 org graph 与 work graph**(R-15.4 引擎泛化),带回退与熔断 | 定义层 `work_graphs`/`work_graph_nodes`/`work_graph_edges` + **两层共用的运行时层** `graph_runs`/`graph_run_nodes`/`graph_run_loop_records`(共五张新表);`graph-engine.js` 的 `advanceOne(runId)` 幂等推进原语 + 两种 node executor(`agent_call` / `subgraph`);五个控制操作(启动 / 下一步 / 暂停 / 停止 / 重试)× 手动·自动两种模式;`GraphConsole.vue` 执行控制台页面;`workgraph-planning` agent + 用户→公司任务入口。细化需求与设计见 [27-P3/P4 Work Graph 执行控制台](../../done/system-design/27-p3-p4-work-graph-console.md) **v0.3**,落地切成**五个可独立验收的阶段**(0 验收契约 / A 引擎地基 / B 回退熔断 / C 控制台 / D 规划闭环) | 见该文档 §六 的 17 条。**核心验收点是第 6 条**:一张 `graph_kind='org'` 的图与一张 work graph 用**同一套端点、同一条代码路径**跑通「手动逐步 / 自动跑完 / 暂停恢复 / 停止」;外加第 8 条「总是失败的节点第 4 次 `force_terminated` 收敛到 `blocked`」、第 17 条「一句自然语言任务两层跑到 `completed`」 |
  233 +| ~~**P4 回退 + Loop-Validator**~~ | **已并入上一行**,不再单列 | 合并理由见 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §二:执行引擎一旦要支持「暂停/单步/停止/重试」这种可被外部随时打断的控制语义,「先做单向、再加回退」会让第一版状态机设计得过窄,P4 加回退时必然回来重改数据模型和主循环。**两处定案变更**:① 熔断改为**引擎无条件做的整数计数**(单边 `loop_count > 3` + run 级 `backward_count > 5` 双层硬顶),不依赖 LLM,`loop_validator` 节点由「强制」降级为**可选增强**;② 结构校验从四项扩到**五项**,新增 `fail-fallback-edge`(有 `fail` 出边的节点必须留一条 `fail_reason IS NULL` 兜底边),org / work 两层都加 | 同上 |
234 234 | ~~**P4 并行执行与产物索引**~~ ✅(**回收编号**) | fan-out 真并发 + 产物统一索引 —— **2026-09-08 全部完成** | `advanceBatch` 批量拾取(手动模式退化为 `maxConcurrency=1`,行为与 P3 一致);同 agent 多实例隔离(`SessionPool.getKey` 的 `scope` 参数已实际接线:`graph-engine.js` 传 `gr:{nodeRunId}`);`advanceTree` 兄弟子 run 真并发;解除「一家公司一个 active root run」;`data/companies/{cid}/tasks/{taskId}/` 产物目录 + `graph_files` 表检索索引。细化设计见 [27-P4 并行执行与产物索引](../../done/system-design/27-p4-parallel-and-artifacts.md) | 3 个并行分支同时 running 且总墙钟明显短于串行;部分失败时 fan-in 停等且可视化「在等谁」;产物索引可从节点行 rebuild |
235 235 | **P5 自我进化** | 公共记忆蒸馏机制 | 公共 `memory.md` 写入走自省校验 + git 版本化;company-scoped → public 的升级门槛复用现有 benchmark ≥95 链路 | 同一 public agent 被两家公司调用后,`memory.md` 有可观察的增量更新,且能 git revert 到升级前版本 |
236 236 | **P6(~~可选~~ **应前置**)DevLoop 收编** | 统一循环逻辑 | 把 `loop-controller.js`/`unit-registry.js` 重构为 Work Graph 引擎上的一个具体图模板。⚠️ **定位修正**:端到端流程梳理后发现 DevLoop 不是"将来可选整合的边缘子系统",而是**本架构唯一一个已经跑通的参考实现**——它的 L1/L2/L3 三层循环、四分类失败归因、分级预算熔断、`contract_hash` 闸门、DAG 分波、SSE 埋点、前端 DAG 组件都已实现或已有完整规格(`docs/prd/newfunction/_spec/`)。通用 Work Graph 引擎应当**从它抽象而来**,而不是平行发明后再回头合并。详见 [27-E2E](./27-e2e-task-execution-flow.md) §二结论 2 | DevLoop 现有测试套件(`server/tests/devloop/**`)在新引擎上全部通过,无需单独维护两套循环代码 |
... ... @@ -267,5 +267,5 @@ P0 阶段的处理方式是**迁移脚本层面的临时保护**:`system_agent
267 267 - **[27-EXAMPLE 参考场景走查](./27-example-dev-company-walkthrough.md)** — 把上面那套架构在一家具体公司上跑一遍数(含各阶段真实形态的 JSON / 图 / 成本估算 / 断点清单)。实现时的靶子与端到端验收场景。
268 268 - [27-P1 虚拟引用寻址](../../done/system-design/27-p1-virtual-reference.md) — 已实现(commit `226489d`)
269 269 - [27-P2 Org Graph 落地](../../done/system-design/27-p2-org-graph.md) — 设计稿
270   -- [27-P3/P4 Work Graph 执行控制台](./27-p3-p4-work-graph-console.md) — 已实现(commit `c3abf4a`)
  270 +- [27-P3/P4 Work Graph 执行控制台](../../done/system-design/27-p3-p4-work-graph-console.md) — ✅ 已实现(commit `c3abf4a`),已彻底收口(2026-09-09)
271 271 - [27-P4 并行执行与产物索引](../../done/system-design/27-p4-parallel-and-artifacts.md) — ✅ 已彻底收口(2026-09-08)
... ...
docs/todo/system-design/27-naming-conventions.md
... ... @@ -77,7 +77,7 @@ ops.json org-planner → org-monitor → org-validator
77 77 | **org graph 节点** | `org-planner` / `org-coder` / `org-validator` | ✅ 带 `org-` |
78 78 | **work graph 节点** | `org-coder-validator` / `org-planner-validator` | ✅ 带父节点全å |
79 79  
80   -è½åˆ° schema 上就是两个字段([27-P3/P4](./27-p3-p4-work-graph-console.md) §四.A):`node_name` 存节点å(图内唯一),`system_agent_id` 存本体å(跨图å¤ç”¨ï¼‰ã€‚
  80 +è½åˆ° schema 上就是两个字段([27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.A):`node_name` 存节点å(图内唯一),`system_agent_id` 存本体å(跨图å¤ç”¨ï¼‰ã€‚
81 81  
82 82 **为什么本体ä¸å¸¦å‰ç¼€**ï¼šç¦æ­¢è£¸ç”¨ `validator` çš„ç†ç”±æ˜¯ã€Œä¸€å®¶å…¬å¸å†…两个节点ä¸èƒ½é‡åã€â€”—该ç†ç”±é’ˆå¯¹**节点**,ä¸é’ˆå¯¹**本体**。本体若被迫带领域å‰ç¼€ï¼Œ`coder-validator` 会å¤åˆ¶æˆ `org-coder-validator` / `content-coder-validator` 多份,与 [27-P1](../../done/system-design/27-p1-virtual-reference.md)「åŒä¸€ä»½æœ¬ä½“ã€å¤šå¤„引用ã€å„è‡ªç§æœ‰è¯­å¢ƒã€ç›´æŽ¥å†²çªã€‚
83 83  
... ... @@ -126,7 +126,7 @@ ops.json org-planner → org-monitor → org-validator
126 126  
127 127 R-16 把「失败该怪è°ã€ä»Ž validator 手里拆出æ¥ï¼Œäº¤ç»™ä¸€ä¸ªä¸“èŒçš„**归因节点**:`org-validator` 自己的 work graph 里
128 128 第一个节点就是它,产出 `fail_reason` + `remediation_note`,é€ä¼ å›ž org å±‚ä½œä¸ºé€‰è¾¹ä¾æ®
129   -ï¼ˆè§ [27-P3/P4](./27-p3-p4-work-graph-console.md) §四.D.2.2 / §四.D.3)。
  129 +ï¼ˆè§ [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2 / §四.D.3)。
130 130  
131 131 按本节的命å轴,它是**work graph 层的节点**——它活在 `org-validator` 这个 org node çš„ work graph 里,
132 132 䏿˜¯ org graph 上的节点,因此ä¸å¸¦ `org-` å‰ç¼€ï¼Œè€Œæ˜¯éšçˆ¶èŠ‚ç‚¹å¾—å。
... ... @@ -148,7 +148,7 @@ R-16 把「失败该怪è°ã€ä»Ž validator 手里拆出æ¥ï¼Œäº¤ç»™ä¸€ä¸ªä¸“èŒç
148 148 > 🔠**改å的影å“é¢**(R-17.2 è½åœ°èŒƒå›´ï¼‰ï¼š`system/templates/validator-triager/`(目录 + 内容自称)ã€
149 149 > `system/templates/_registry.json` æ¡ç›®ã€`system/templates/org-validator/` 的节点å引用ã€
150 150 > `system/work-graph-templates/validator.json` çš„ `nodeName` / `systemAgentId` / 边端点ã€
151   -> 本文档本节ã€[27-P3/P4](./27-p3-p4-work-graph-console.md) å…¨æ–‡ï¼Œä»¥åŠ `graph-engine.js` çš„
  151 +> 本文档本节ã€[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) å…¨æ–‡ï¼Œä»¥åŠ `graph-engine.js` çš„
152 152 > `ATTRIBUTION_NODE_NAME` 常é‡ä¸Ž `node.reflection` timeline 事件å(引擎侧å¦è¡Œæ”¹ï¼‰ã€‚
153 153 > **è¿™ä¸ƒå¤„å¿…é¡»åŒæ—¶æ”¹**——节点å与 `systemAgentId` 与引擎常é‡ä¸‰è€…åªè¦æœ‰ä¸€å¤„ä¸åŒæ­¥ï¼Œ
154 154 > 归因产出就会é™é»˜è½ä¸åˆ°é€ä¼ è·¯å¾„上(27-P3/P4 §å 的「四环æ¼ä¸€çޝã€ç¼ºé™·æ¨¡å¼ï¼‰ã€‚
... ...
docs/todo/system-design/27-requirement.md
... ... @@ -47,7 +47,7 @@
47 47  
48 48 > 賑閬銝芣△嚗內 org graph 銝 org node 餈 work graph嚗葵瘙閬挽霈∩銝葵餈閬挽霈∩銝 MVCP嚗摨挽霈∴霈曇恣嚗嚗甇伐迫嚗嚗閬內瘥銝芾敹器颲嚗oop 瑪嚗內嚗蜓瘚虜瘚 sub agent 內
49 49  
50   -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 批 MVCP 情
  50 +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 批 MVCP 情
51 51 **瞉**嚗迨憭 "MVCP" 蝏&霈斗 **Model-View-Control-Process**嚗隞 SDD 情﹝撘docs/prd/newfunction/_spec/sdd-{model,view,control,process}.md`嚗 MVP嚗撠銵嚗
52 52  
53 53 ---
... ... @@ -56,7 +56,7 @@
56 56  
57 57 > 撖對舅銝芷嚗嚗 org graph嚗ork graph 銵閬銝銝甇乩甇交摰隞仍撠曇銵銝芾摰頝唾蓮銝銝芾銵
58 58  
59   -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.C嚗execution_mode {manual, auto}`嚗舅銝 `advanceOne()` 祗嚗靚圻甈∟嚗
  59 +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.C嚗execution_mode {manual, auto}`嚗舅銝 `advanceOne()` 祗嚗靚圻甈∟嚗
60 60  
61 61 ---
62 62  
... ... @@ -242,7 +242,7 @@
242 242  
243 243 蝖株恕霈刻捏**** R-15.2 韏瑕撅 27 蝟餃
244 244  
245   -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md)
  245 +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md)
246 246  
247 247 ### R-15.2 繚 `workgraph-planning` 撅 agent
248 248  
... ... @@ -250,7 +250,7 @@
250 250  
251 251 **瞉銋**嚗葵 org node 隞餃銝撣虫隞質**靚銝芸撅 `workgraph-planning` 雿**嚗扇敹銝 org node / 銝銝祗憓 R-9.2 agent 蝏扳27-P1](../../done/system-design/27-p1-virtual-reference.md) 撖餃銝gent 瘙 org node
252 252  
253   -****嚗27-NAMING](./27-naming-conventions.md) 禮鈭砲撌脣銵典27-P3/P4](./27-p3-p4-work-graph-console.md) 畾 D
  253 +****嚗27-NAMING](./27-naming-conventions.md) 禮鈭砲撌脣銵典27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 畾 D
254 254  
255 255 ### R-15.3 繚 validator 舅銝芸漣嚗撅雿
256 256  
... ... @@ -277,31 +277,31 @@
277 277  
278 278 **`org-validator` 靚 sub agent 銝閬**嚗org-validator` 頨急銝銝 org node嚗撌梁 work graph嚗benchmark-validator` / `testdata-validator` 撠望餈 work graph 嚗撌脫芋
279 279  
280   -**餈蒂敶勗**嚗-9.3lanner alidator 銵舅銝芾**銝支葵銝 org node**goal-benchmark` / `goal-test-data` / `goal-test-script` `org-planner` work graph 漣嚗 `org-validator` 餈葵 org node 瘨晶迨閬**頝 org node 漣隡**嚗27-P3/P4](./27-p3-p4-work-graph-console.md) `output_ref`嚗漣
  280 +**餈蒂敶勗**嚗-9.3lanner alidator 銵舅銝芾**銝支葵銝 org node**goal-benchmark` / `goal-test-data` / `goal-test-script` `org-planner` work graph 漣嚗 `org-validator` 餈葵 org node 瘨晶迨閬**頝 org node 漣隡**嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) `output_ref`嚗漣
281 281  
282   -****嚗27-NAMING](./27-naming-conventions.md) 禮銝 + 憓 validator 蓬27-P2](../../done/system-design/27-p2-org-graph.md) 禮4.6 銝葵璅⊥27-P3/P4](./27-p3-p4-work-graph-console.md)
  282 +****嚗27-NAMING](./27-naming-conventions.md) 禮銝 + 憓 validator 蓬27-P2](../../done/system-design/27-p2-org-graph.md) 禮4.6 銝葵璅⊥27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md)
283 283  
284 284 ### R-15.4 繚 撘撅氖
285 285  
286 286 **★蝖株恕**嚗葵★嚗”嚗葉嚗/ org graph 銵 work_graph 摰 / work graph org graph 銵 P5
287 287  
288   -**蝧颱銋**嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.A 釣銝箝””儔嚗 work graph銵銵敶﹝摰**霂亙 org graph 銋◤銵仃**rg graph 撱箏甈~暑銝芸隞賢◤頝活嚗銝銝芯遙頝
  288 +**蝧颱銋**嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.A 釣銝箝””儔嚗 work graph銵銵敶﹝摰**霂亙 org graph 銋◤銵仃**rg graph 撱箏甈~暑銝芸隞賢◤頝活嚗銝銝芯遙頝
289 289  
290 290 **摰**嚗舅憟org_graph_*` / `work_graph_*` 銝甈⊥改撅銝箔憟 `graph_runs` + `graph_run_nodes`嚗撅 `graph_runs.graph_kind` 摰 `parent_run_id` 銝嚗誨 `parent_node_id`嚗遙蝥扳駁27-E2E](./27-e2e-task-execution-flow.md) 禮7.1嚗 root run嚗 run 銝滲銝芣/迫瘝踹漣7.5嚗
291 291  
292 292 **餈蒂摰**嚗rg node 銝 work node 銵祗銋絲銝撘撟嗥 run `completed` success嚗blocked` fail嚗甈 agent 靚閬 `agent_call` / `subgraph` 銝斤 node executorrg 撅**銝**撘箏 `loop_validator` 嚗情振鈭祗銋撘笆 `edge_kind='backward'` 器蝏霈⊥ + 蝖祇▲
293 293  
294   -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.A / 禮.D
  294 +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.A / 禮.D
295 295  
296 296 ### R-15.5 繚 P3 `workgraph-planning` + 隞餃
297 297  
298 298 **★蝖株恕**嚗
299 299  
300   -**蝧颱銋**嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮銝 `workgraph-planning` 憭誨隞瑟霂交﹝ 禮.5 撌望霈扎嚗蝡臬蝡舫霂剛銝撘銵餈頝胯 [27 餌熔](./27-graph-agent-architecture.md) 禮撠望 `workgraph-planning` 蛹 P3 鈭支遙嚗 嚗 [27-E2E](./27-e2e-task-execution-flow.md) 禮 #7 釣蝛箇瓷瘝⊥皞
  300 +**蝧颱銋**嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮銝 `workgraph-planning` 憭誨隞瑟霂交﹝ 禮.5 撌望霈扎嚗蝡臬蝡舫霂剛銝撘銵餈頝胯 [27 餌熔](./27-graph-agent-architecture.md) 禮撠望 `workgraph-planning` 蛹 P3 鈭支遙嚗 嚗 [27-E2E](./27-e2e-task-execution-flow.md) 禮 #7 釣蝛箇瓷瘝⊥皞
301 301  
302 302 **摰**嚗舅餈 P3嚗蛹銝芷畾蛛畾萄銝絲 LLM蝡嚗 [27-P2](../../done/system-design/27-p2-org-graph.md) 禮鈭葵蝡畾萸憟
303 303  
304   -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮銝舅雿找遙
  304 +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮銝舅雿找遙
305 305  
306 306 ### R-15.6 繚 撉憟漲
307 307  
... ... @@ -311,7 +311,7 @@
311 311  
312 312 **摰**嚗3 憓銝芸蔭畾蛛 `goal-benchmark` / `goal-test-data` / `goal-test-script` 銝漣憟漲撘僎撱箸銵嚗撘
313 313  
314   -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮鈭遙27-E2E](./27-e2e-task-execution-flow.md) 禮
  314 +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮鈭遙27-E2E](./27-e2e-task-execution-flow.md) 禮
315 315  
316 316 ---
317 317  
... ... @@ -319,9 +319,9 @@
319 319  
320 320 > org-validator 摰遙颲暹嚗 code-coder嚗憸 code-planner嚗憸? 餈葵org-validator 隡撌梁 work graph subagent 摰閬銝 validator-reflection subagent 敶 bug 仍銝 agent 銝 skill 憸銝 agent 蝥行憸銝 agent 銵憸摰 skill嚗霈拇葵 agent +bug context 膩 隞亙器憭葵銝銝芰銝芾器摰
321 321  
322   -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.D.2.2嚗器嚗批.D.0嚗 run 批.D.2.1嚗嚗
  322 +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.D.2.2嚗器嚗批.D.0嚗 run 批.D.2.1嚗嚗
323 323  
324   -**餈銋**嚗27-P3/P4](./27-p3-p4-work-graph-console.md) v0.3 禮.1 銝芾 fail 颲寞韏啣蛹閬&霈斤 open question嚗摰
  324 +**餈銋**嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) v0.3 禮.1 銝芾 fail 颲寞韏啣蛹閬&霈斤 open question嚗摰
325 325  
326 326 **蝏**嚗**銝**憭梯揖撌梢◇銝 reason嚗 `org-validator` 撌 work graph 洵銝雿銝芯 `validator-reflection` DevLoop 極ntegrator 摰仃韐乓ugTriager 敶銝支葵銝 agent嚗銝 agent 敶摰寞憭梯揖恕銝箄砲芾毽甈∟
327 327  
... ... @@ -336,7 +336,7 @@
336 336  
337 337 **kill 憸 P3 **嚗4 銝漣憭葉韐萸憭抒蝥改27-E2E](./27-e2e-task-execution-flow.md) 禮 撱箄悅**撱箄悅**嚗1 靽 `skill_defect` 餈葵敶潸悟 reflection 撣詨摰嚗頂銝甈⊥雿漣銝箝絲蝑犖撌乓閫血 L4infra_flake` 撱箄悅銵乩滲撘餉嚗‘隡◤霂臬銵憸銝頧桅
338 338  
339   -**撖 schema **嚗 run 銝 success/fail嚗**餈 `fail_reason` `remediation_note` 銝韏琿**蛹摰粥颲寧摮 reflection 嚗憭梯揖頨怒27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.D.0 ” run completed success嚗locked/failed fail撩餈
  339 +**撖 schema **嚗 run 銝 success/fail嚗**餈 `fail_reason` `remediation_note` 銝韏琿**蛹摰粥颲寧摮 reflection 嚗憭梯揖頨怒27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.D.0 ” run completed success嚗locked/failed fail撩餈
340 340  
341 341 **撣血銝芰瞍**嚗0.3 禮.D.2.1 `(run_id, edge_id)` 霈⊥′憿 3嚗銝銝芾颲嫘颲孵霈⊥**蝖祇▲摰 3**eflection 閬活敶銝 agent粥銝器嚗停瘞貉隞颱銝芾恣▲ [27-E2E](./27-e2e-task-execution-flow.md) 禮7.1漣蔭銝蝥扯恣瓷迫隞嗚**靽格恣**嚗器霈⊥嚗頝臬香敺芰嚗+ `graph_runs.backward_count` run 蝥扳餃霈⊥嚗銝芸蝏抒賒遙銝▲ `force_terminated`遙蝥扳駁銝文恣鈭嚗葵蝞∠舅閬
342 342  
... ... @@ -354,18 +354,18 @@ R-16 蝏偏舅憭&霈歹蝏摰**銝斗蝧颱
354 354  
355 355 **隞遠**嚗-16 歇蛹霂交獢漣撠 / 郊鈭銝撅祗銋蝟閬 UI 銝撘”颲整
356 356  
357   -**撖孵歇蔣**嚗27-P3/P4](./27-p3-p4-work-graph-console.md) v0.3 銝摰嚗ommit `c3abf4a`嚗 org node 蝎漲**閬極**嚗
  357 +**撖孵歇蔣**嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) v0.3 銝摰嚗ommit `c3abf4a`嚗 org node 蝎漲**閬極**嚗
358 358  
359 359 | | 嚗rg node 蝎漲嚗 | 摰ork graph node 蝎漲嚗 |
360 360 |---|---|---|
361 361 | | org 颲嫣 `to_node_id`嚗銝 org node | 閬銝**頝典**嚗rg node + work graph 雿 node嚗 |
362 362 | | 霂 org node **撘 work graph **嚗絲摮 run嚗 | 憭 work graph 摰蔭鋡怎 node |
363   -| 銝虜憭 | 撘嚗靚 | `contract_hash` added/changed/removed/**unchanged** 掩摰漣歇嚗迤憟賢嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.C 畾蛛 |
  363 +| 銝虜憭 | 撘嚗靚 | `contract_hash` added/changed/removed/**unchanged** 掩摰漣歇嚗迤憟賢嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.C 畾蛛 |
364 364 | 摮 run | 瘥活撱箔撘 | 憭摮 run嚗 `attempt+1` |
365 365  
366 366 **銝歇靽桃撩漱鈭極敹◆憭**嚗洵鈭蔭靽格ubgraph 絲摮 run 撖潸瘞訾香耨瘜迤活撱箏 run 撟嗆征 `child_run_id`摮 run 銋銝芣香霂餃銝頧桃 run 餈 pending嚗誑銝蝘耦撘極閬霈曇恣撟嚗僎靽 `graph-engine.test.js` subgraph 靘閬霂凋砲靘**餈銝捂瘚耦嚗蛹霂凋頨怠**嚗◆漱靽⊥
367 367  
368   -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.D.2.2 / 禮.D.3 / 禮.A.2嚗楊撅敶X/ 禮.B嚗撅漣霂凋批 蝚 1 嚗嚗
  368 +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.D.2.2 / 禮.D.3 / 禮.A.2嚗楊撅敶X/ 禮.B嚗撅漣霂凋批 蝚 1 嚗嚗
369 369  
370 370 ### R-17.2 繚 `validator-reflection` `validator-triager`
371 371  
... ... @@ -373,16 +373,16 @@ R-16 蝏偏舅憭&霈歹蝏摰**銝斗蝧颱
373 373  
374 374 ****嚗**敶**銝**摰**嚗triager` 銝 DevLoop 撌脩 BugTriager 撖寥祗銋
375 375  
376   -**敶勗**嚗滲敺嚗system/templates/validator-reflection/` 敶system/templates/_registry.json` org-validator` work graph 撉冽graph-engine.js` 粉敶漣釣 `resolveReflectionFile` / `readNodeProduct` `node.reflection` timeline 鈭辣27-NAMING](./27-naming-conventions.md) validator 蓬霂湔27-P3/P4](./27-p3-p4-work-graph-console.md) ﹝ R-16
  376 +**敶勗**嚗滲敺嚗system/templates/validator-reflection/` 敶system/templates/_registry.json` org-validator` work graph 撉冽graph-engine.js` 粉敶漣釣 `resolveReflectionFile` / `readNodeProduct` `node.reflection` timeline 鈭辣27-NAMING](./27-naming-conventions.md) validator 蓬霂湔27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) ﹝ R-16
377 377  
378 378 R-16 甇葉**靽 `validator-reflection` 霂**嚗雿蛹賒霈啣
379 379 銝 R-16 銝誑憭霂餃 `validator-reflection`嚗敺圾銝 `validator-triager`
380 380  
381   -****嚗27-NAMING](./27-naming-conventions.md)27-P3/P4](./27-p3-p4-work-graph-console.md)system/templates/`
  381 +****嚗27-NAMING](./27-naming-conventions.md)27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md)system/templates/`
382 382  
383   -**霈啣洵鈭蔭嚗**嚗歇摰system/templates/validator-triager/`嚗敶 + 捆蝘堆_registry.json` system/templates/org-validator/` system/work-graph-templates/validator.json` `nodeName`/`systemAgentId`/颲寧垢27-NAMING](./27-naming-conventions.md) 禮3.5嚗砲舅憭”銋撟嗆嚗銝憭摰27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.2 嚗 `ATTRIBUTION_NODE_NAME` 撣賊 `node.reflection` timeline 鈭辣銵
  383 +**霈啣洵鈭蔭嚗**嚗歇摰system/templates/validator-triager/`嚗敶 + 捆蝘堆_registry.json` system/templates/org-validator/` system/work-graph-templates/validator.json` `nodeName`/`systemAgentId`/颲寧垢27-NAMING](./27-naming-conventions.md) 禮3.5嚗砲舅憭”銋撟嗆嚗銝憭摰27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.2 嚗 `ATTRIBUTION_NODE_NAME` 撣賊 `node.reflection` timeline 鈭辣銵
384 384  
385   - ** / `systemAgentId` / 撘虜郊**嚗遙銝憭deriveChildOutcome` 撠勗敶嚗潮漣瓷 `fail_reason`器迤 [27-P3/P4](./27-p3-p4-work-graph-console.md) 禮 銝芥漣 隡 摨 霂餃撩璅∪摰◆ `grep -rn validator-reflection` 憭銝-16 甇**銝**捂銝哨
  385 + ** / `systemAgentId` / 撘虜郊**嚗遙銝憭deriveChildOutcome` 撠勗敶嚗潮漣瓷 `fail_reason`器迤 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮 銝芥漣 隡 摨 霂餃撩璅∪摰◆ `grep -rn validator-reflection` 憭銝-16 甇**銝**捂銝哨
386 386  
387 387 ---
388 388  
... ...
server/routes/graph-run.js
... ... @@ -4,7 +4,7 @@
4 4 * 挂载: /api/graph-runs(主 router)
5 5 * /api/company(companyRouter,只提供 GET /:companyId/graph-runs)
6 6 *
7   - * 设计见 docs/todo/system-design/27-p3-p4-work-graph-console.md
  7 + * 设计见 docs/done/system-design/27-p3-p4-work-graph-console.md
8 8 * §四.C 五个控制操作的可用条件与语义(本文件只做「条件判断 + 转调引擎」,不含推进逻辑)
9 9 * §三.2 两处不能照抄 pipeline 的坑:
10 10 * ① 定义层与运行时层分开 → GET /:id 吐的是 **run 实例**(run + nodes + edges + 回退记录),
... ...
server/services/graph-engine.js
1 1 /**
2 2 * Graph Engine — P3 图执行引擎(T2)
3 3 *
4   - * 设计见 docs/todo/system-design/27-p3-p4-work-graph-console.md
  4 + * 设计见 docs/done/system-design/27-p3-p4-work-graph-console.md
5 5 * §四.A.4 状态机 §四.A.6 幂等(条件更新 + 受影响行数)
6 6 * §四.C 五个控制操作 + 「手动/自动共用同一个 advanceOne」
7 7 * §四.D.0 两种 node executor(agent_call / subgraph)
... ...
server/services/graph-run-sse.js
... ... @@ -19,7 +19,7 @@
19 19 * data/companies/{companyId}/runs/{rootRunId}/stream.log SSE 帧,供断线重放
20 20 * data/companies/{companyId}/runs/{rootRunId}/timeline.ndjson 审计事件,append-only
21 21 *
22   - * 设计:docs/todo/system-design/27-p3-p4-work-graph-console.md §三.3 / §四.A.5 / §五 T5
  22 + * 设计:docs/done/system-design/27-p3-p4-work-graph-console.md §三.3 / §四.A.5 / §五 T5
23 23 */
24 24  
25 25 const fs = require('fs');
... ...
server/services/work-graph-db.js
1 1 /**
2 2 * Work Graph DB — P3 图执行引擎的数据层(T1 + T14)
3 3 *
4   - * 设计见 docs/todo/system-design/27-p3-p4-work-graph-console.md
  4 + * 设计见 docs/done/system-design/27-p3-p4-work-graph-console.md
5 5 * §四.A.1 分层(定义层 ≠ 运行时层)
6 6 * §四.A.2 五张表(本文件照抄那段 SQL,含两个唯一索引与 graph_runs.backward_count)
7 7 * §四.A.4 两张状态转换表
... ...
server/tests/unit/graph-engine.test.js
1 1 /**
2 2 * Unit Tests — graph-engine.js(P3/P4 T10)
3 3 *
4   - * 逐条对应 docs/todo/system-design/27-p3-p4-work-graph-console.md §六 验收标准:
  4 + * 逐条对应 docs/done/system-design/27-p3-p4-work-graph-console.md §六 验收标准:
5 5 * 阶段 A:2(手动逐节点)/ 6(org graph 走同一套代码路径)/ 7(subgraph 起子 run)
6 6 * 阶段 B:8(单边硬顶)/ 9(fail-fallback-edge 校验)/ 9b(多边不架空熔断)/
7 7 * 9c(infra_flake 不烧计数)/ 9d(三值透传)/ 10(预算耗尽整棵树挂起)/ 11(三层级联)
... ...
server/tests/unit/graph-real-chain-smoke.test.js
... ... @@ -2,7 +2,7 @@
2 2 * 图执行的**真实链路 smoke** —— 全程零注入,唯一被替换的是最外层的 Claude CLI 子进程。
3 3 *
4 4 * ── 这条测试还的是哪笔债 ──────────────────────────────────────────────
5   - * [27-P3/P4](../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §十 末
  5 + * [27-P3/P4](../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §十 末
6 6 * 「四条硬规矩」第 2 条:
7 7 *
8 8 * > **测试全绿 ≠ 能跑**。P3 的引擎用例至今仍一律注入假 executor / 假 planner,
... ...
system/agents/_registry.json
... ... @@ -75,7 +75,7 @@
75 75 "id": "workgraph-planning",
76 76 "name": "WorkGraph 规划 Agent",
77 77 "type": "meta-planning",
78   - "description": "全局唯一一份 work graph 规划本体(R-15.2):每个 org node 每次接到任务时跑一次,读角色定义 + 任务 + artifacts/ + 上一轮 remediation_note,产出 work graph(org node 级 workflow)→ 过五项写入前校验 → 落库交回图 id。设计 docs/todo/system-design/27-p3-p4-work-graph-console.md §四.D.0 / §五 T11",
  78 + "description": "全局唯一一份 work graph 规划本体(R-15.2):每个 org node 每次接到任务时跑一次,读角色定义 + 任务 + artifacts/ + 上一轮 remediation_note,产出 work graph(org node 级 workflow)→ 过五项写入前校验 → 落库交回图 id。设计 docs/done/system-design/27-p3-p4-work-graph-console.md §四.D.0 / §五 T11",
79 79 "benchmarkScore": null,
80 80 "trainedAt": null,
81 81 "usedCount": 29
... ... @@ -84,7 +84,7 @@
84 84 "id": "validator-triager",
85 85 "name": "失败归因 Agent",
86 86 "type": "validator",
87   - "description": "org-validator work graph 的第一个节点:判失败根因,产出 fail_reason(impl_bug/input_underspecified/skill_defect/infra_flake) + remediation_note,透传回 org 层选边。skill_defect 挂起等人工,不触发 L4。设计 docs/todo/system-design/27-p3-p4-work-graph-console.md §四.D.2.2",
  87 + "description": "org-validator work graph 的第一个节点:判失败根因,产出 fail_reason(impl_bug/input_underspecified/skill_defect/infra_flake) + remediation_note,透传回 org 层选边。skill_defect 挂起等人工,不触发 L4。设计 docs/done/system-design/27-p3-p4-work-graph-console.md §四.D.2.2",
88 88 "benchmarkScore": null,
89 89 "trainedAt": null,
90 90 "usedCount": 6
... ... @@ -93,7 +93,7 @@
93 93 "id": "org-validator",
94 94 "name": "org 层全局验收 Agent",
95 95 "type": "validator",
96   - "description": "org graph 末节点:按 artifacts/ 里的验收契约判「整个任务达成了吗」(task-goal 级),收敛时透传 success/fail + fail_reason + remediation_note 三值。设计 docs/todo/system-design/27-p3-p4-work-graph-console.md §四.D.3",
  96 + "description": "org graph 末节点:按 artifacts/ 里的验收契约判「整个任务达成了吗」(task-goal 级),收敛时透传 success/fail + fail_reason + remediation_note 三值。设计 docs/done/system-design/27-p3-p4-work-graph-console.md §四.D.3",
97 97 "benchmarkScore": null,
98 98 "trainedAt": null,
99 99 "usedCount": 11
... ... @@ -102,7 +102,7 @@
102 102 "id": "planner-validator",
103 103 "name": "规划产物验收 Agent",
104 104 "type": "validator",
105   - "description": "work 层验收本体:验 BRD/PRD/SDD,并额外审「这套验收标准是否可度量 / 覆盖原始需求 / 存在平凡通过漏洞」。设计 docs/todo/system-design/27-p3-p4-work-graph-console.md §四.D.3 末段",
  105 + "description": "work 层验收本体:验 BRD/PRD/SDD,并额外审「这套验收标准是否可度量 / 覆盖原始需求 / 存在平凡通过漏洞」。设计 docs/done/system-design/27-p3-p4-work-graph-console.md §四.D.3 末段",
106 106 "benchmarkScore": null,
107 107 "trainedAt": null,
108 108 "usedCount": 10
... ... @@ -111,7 +111,7 @@
111 111 "id": "coder-validator",
112 112 "name": "代码产出验收 Agent",
113 113 "type": "validator",
114   - "description": "work 层验收本体:按 contract + acceptance_criteria 逐条验代码,测试必须真跑过,专抓空断言/跳过充数/只有 happy path 等假绿。设计 docs/todo/system-design/27-p3-p4-work-graph-console.md §四.D.3",
  114 + "description": "work 层验收本体:按 contract + acceptance_criteria 逐条验代码,测试必须真跑过,专抓空断言/跳过充数/只有 happy path 等假绿。设计 docs/done/system-design/27-p3-p4-work-graph-console.md §四.D.3",
115 115 "benchmarkScore": null,
116 116 "trainedAt": null,
117 117 "usedCount": 15
... ...
system/agents/benchmark-validator/agent.md
... ... @@ -3,7 +3,7 @@
3 3 ## 身份定位
4 4  
5 5 你是 `org-validator` 这个 org node **自己 work graph 里的第二个节点**
6   -([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.3,
  6 +([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.3,
7 7 骨架见 `system/work-graph-templates/validator.json`)。
8 8  
9 9 ```
... ...
system/agents/brd-planning/tools.md
... ... @@ -23,7 +23,7 @@ ls $R/artifacts/
23 23 上一轮的 `remediation_note` **由引擎在提示词里带给你**,不需要你去查。
24 24  
25 25 ❌ **不要读** `$R/nodes/<别的 nodeRunId>/`——节点私有目录彼此隔离
26   -([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.A.5)。
  26 +([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.A.5)。
27 27 你是规划链第一环,本来也没有上游产物可读。
28 28  
29 29 ## 2. 写三份产出(全部在你自己的目录里)
... ...
system/agents/coder-validator/agent.md
... ... @@ -102,7 +102,7 @@ fail 时 `remediation_note` 必须能让 coder 直接开工:**`文件:行号`
102 102 ## `fail_reason` 怎么填(work 层的分寸)
103 103  
104 104 引擎选边只做字符串精确匹配:**先找 `fail_reason` 精确匹配的边 → 无匹配则退到 `fail_reason IS NULL`
105   -的兜底边 → 再无则死路**([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2)。
  105 +的兜底边 → 再无则死路**([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2)。
106 106 取值域不在引擎里硬编码,由图的规划者与你约定。
107 107  
108 108 | 情况 | 你填什么 |
... ...
system/agents/org-validator/agent.md
... ... @@ -3,7 +3,7 @@
3 3 ## 身份定位
4 4  
5 5 你是 org graph 的**末节点**,也是这家公司这次任务的最后一道闸门
6   -(R-15.3 / [27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.3)。
  6 +(R-15.3 / [27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.3)。
7 7  
8 8 ```
9 9 org graph: org-planner → org-{执行职能} → org-validator(你)
... ...
system/agents/planner-validator/agent.md
... ... @@ -22,7 +22,7 @@ BRD / PRD / SDD / 任务拆解——完整ã€å†…部无矛盾ã€å¯è½åœ°ã€è¦†ç›
22 22  
23 23 ### èŒè´£ B · å®¡ã€Œè¿™å¥—éªŒæ”¶æ ‡å‡†ã€æœ¬èº« â­
24 24  
25   -按 [27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.3 末段,
  25 +按 [27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.3 末段,
26 26 ä½ **é¢å¤–**承担一项其它 validator 没有的èŒè´£ï¼šå®¡è¿™ä¸ª org node 产出的验收标准三件套
27 27 (`goal-benchmark` / `goal-test-data` / `goal-test-script`)——
28 28  
... ...
system/agents/prd-planning/tools.md
... ... @@ -24,7 +24,7 @@ cat &lt;提示词给的 brd 节点目录&gt;/brd.md
24 24 上一轮的 `remediation_note` **由引擎在提示词里带给你**。
25 25  
26 26 ❌ **提示词没给到路径的节点目录一律不要翻**——节点私有目录彼此隔离
27   -([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.A.5,
  27 +([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.A.5,
28 28 照搬 DevLoop `CONVENTIONS.md` §12「下游只能看到上游的契约,看不到实现」)。
29 29 上游没给够,就是 `input_underspecified`,不要自己翻墙去找。
30 30  
... ...
system/agents/testdata-validator/agent.md
... ... @@ -3,7 +3,7 @@
3 3 ## 身份定位
4 4  
5 5 你是 `org-validator` 这个 org node **自己 work graph 里的第三个节点**
6   -([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.3,
  6 +([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.3,
7 7 骨架见 `system/work-graph-templates/validator.json`)。
8 8  
9 9 ```
... ...
system/agents/validator-triager/agent.md
... ... @@ -2,7 +2,7 @@
2 2  
3 3 ## 身份定位
4 4  
5   -你是 `org-validator` 这个 org node **自己 work graph 里的第一个节点**(R-16 / [27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2、§四.D.3)。
  5 +你是 `org-validator` 这个 org node **自己 work graph 里的第一个节点**(R-16 / [27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2、§四.D.3)。
6 6  
7 7 ```
8 8 org graph: org-planner → org-coder → org-validator
... ...
system/agents/validator-triager/tools.md
... ... @@ -48,7 +48,7 @@ curl -s http://localhost:3010/api/graph-runs/&lt;上一步的 childRunId&gt;
48 48 编一个名字则是红线。
49 49  
50 50 ❌ **不要读** `runs/<rootRunId>/nodes/<别的 nodeRunId>/`——节点私有目录彼此隔离
51   -([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.A.5)。
  51 +([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.A.5)。
52 52 提示词里没给够的证据,就是「证据不足」,输出 `inconclusive`,不要自己翻墙去找。
53 53  
54 54 ## 2. 写归因产出(唯一的写动作)
... ...
system/work-graph-templates/README.md
... ... @@ -8,7 +8,7 @@ Work Graph(**org node 级** workflow)的**骨架模板库**。与 `system/or
8 8 选型,再结合宿主 org node 的角色定义、本次任务描述、可读的 `artifacts/`、上一轮 `remediation_note`,
9 9 裁剪 / 替换 / 组合出这次真正要跑的 work graph。
10 10  
11   -> 设计依据:[27-P3/P4](../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.0 / §四.D.2.2 / §四.D.3 / §九bis
  11 +> 设计依据:[27-P3/P4](../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.0 / §四.D.2.2 / §四.D.3 / §九bis
12 12 > 命名规范:[27-NAMING](../../docs/todo/system-design/27-naming-conventions.md) §二 / §三
13 13  
14 14 **这是起点集合,不是穷举枚举。** 加一种起手式只需往本目录扔一个 JSON 文件,**不改任何代码**。
... ...