-
runClaimedNode 派发真实调用之前,先查一次 agentLocator.missingBodyDefinition (systemAgentId)——此前这个判据只在招聘/建公司路径上被查过,图执行的核心路径 从没查过:本体因任何原因(装配没跑完、手工改坏、迁移遗留)仍是空骨架时,引擎 会原样把它当正常本体派发一次真实调用,静默产出一份没有角色指导支撑的结果 (真实样本见 34 号文档 §五:unit-tester 顶着 _base 骨架跑完了一整条真实任务)。 本体不完整时:新 fail_reason='body_not_ready'(与招聘路径的同名状态同义), 不扣预算(没有调用发生,"一次调用一定发生了"这条记账理由不成立)、不起边界 守卫、走正常的选边/兜底/熔断路径(不发明第二套重试语义)。 只在 agentExecutor === defaultAgentExecutor 时生效(与 boundaryGuardApplicable 同一判据)——第一版忘了这条,把全仓库几百个用假 systemAgentId + 注入假 executor 的用例全部判成 body_not_ready,跑单测直接炸穿 75 个用例;加上这条判据后收窄回来, 只在真会起 CLI 的路径上生效。 只查 agent_call 节点:subgraph 节点的 systemAgentId 不是即将被直接调用的本体, 它派发的是 workgraph-planning 去规划子图。 新增 graph-engine-body-not-ready.test.js(4 例)+ 更新 graph-engine-fail-reason.test.js 的取值域断言(五个→六个)。全量单测 1004/1004 通过。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>