## 一、W7「零边图」不是待办 —— 它早修了,是注释在骗人
`company-service.js` 的判据注释仍写着「判据用**有没有边**」,并留着一段
「已知残留:单 org node 的最小图没有边,判据③不生效……真跑到那一步再看」。
**那个残留在 `58a2865`(08-17)就修掉了**:`orgGraphMembership` 现在的主判据是
`authored_by='planner'` 的节点存在(「orggraph-planning 提交过一张图」的直接证据,
零边也认),边数降为存量行的回落判据;守卫 `company-hire-org-layer.test.js` 的
`CO_ZEROEDGE` + `W7-fix` 两条盯着。
注释没跟着改,于是它把读的人**引向一个已经修好的缺陷**去重修一遍 —— 我就是这么被
带偏的:读到那段注释就没再往 `orgGraphMembership` 里跟,还据此往待办清单里写了一条。
这是「指路牌失效」那一族,和 CLAUDE.md 死链同型,只是方向相反(那边指向不存在的东西,
这边描述已不存在的洞)。
判据的措辞也改了:**「成型」的判据在 graph-service.orgGraphMembership(),不在这里**,
免得下一个人照注释理解。P3B 文档与 docs/README.md 的对应条目一并更正。
## 二、还上「真实路径 smoke 进 CI」那笔欠账的一半(27-P3/P4 §十 硬规矩 2)
原话是「凡是靠注入点验的能力,都要有一条真实路径的 smoke 进 CI 才算验收完成 ——
这条欠账仍未还」。此前唯一走真实路径的 `scripts/real-pm-smoke.js` 要真 API 额度、
人工跑、而且验的是 DevLoop 不是图执行。
做法是把「真 LLM」和「真代码路径」拆开:**只把最外层的 CLI 子进程换成 fixture 回放**,
setAgentExecutor / setPlanWorkGraph 一个都不调。链路完整走
advanceOne → defaultAgentExecutor → AgentManager → ClaudeCliProtocol
→ onAcpEvent → 落盘 → readNodeProduct → settleNode → spendBudget → 边界守卫。
三条断言各盯一处**假 executor 天然绕开**的接线:
· ① mock/files 真的落到节点产物目录(假 executor 直接 return,这一环整个不存在)
· ② token 用量真的从 session/result.usage 数进预算 —— **就是 §六 验收 10 卡了两轮的那一维**
· ③ boundaryGuardApplicable 在这条路径上为真(注入假 executor 时它恒为假,
那条唯一有实际后果的分支实际零覆盖);带反向对照,注入后必须变假
反向验过:断掉①的落盘、断掉②的累加,对应用例分别变红。
为此改了一处 mock:session/result 的 usage 原来硬编码 {input:0,output:0},
现在 fixture 可指定(缺省仍是 0,既有 fixture 行为一个字不变)。
**不改这一处,token 那一维在 CI 里永远产不出数** —— 验收 10 当初就是卡在这儿。
**没还清的部分写在文档里,别当成还清了**:真 LLM 仍进不了 CI;
subgraph 那一支(defaultPlanWorkGraph)仍只有注入式覆盖;
多节点 / 回退边 / 熔断没进这条 smoke,它只推一个节点。
afterAll 清掉真实链路建出的公司态目录(gitignore 挡着不进库,但留着会让别的
用例遍历 system/agents/ 时多扫一份)。
全量:139 文件 / 1295 测试全绿。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>