cb5af31e79
plan_root_completion_identity_at 读绑定用的是会遍历并校验整条祖先链的入口, 而识别 Fast GDD 只看 run 自己那条记录的 source/profile。链走排在识别前面,于是 任何祖先绑定的毛病都先变成 Err,再被完成门统一翻成 needs-reconciliation——扣在一个 下一行本来就会被判「不是策划根」的 run 头上,让它再也收束不了。 可达:task_start 里 requires_public_start_status 明确把 agent-delegate-receipt 与 agent-isolated-join 排除在「无父的公开启动」之外,带父链的 supervisor run 在生产中 确实存在。新增复现用例在修复前报 Some(NeedsReconciliation)。 改动安全的两条依据: - 两个入口对同一个 (agent, run) 返回的绑定值完全相同(链走版本最后返回的就是 run 自己那条记录),链走纯属校验副作用,识别判据一字未变。 - 策划根的严格度一点没降:validate_project_supervisor_plan_root_binding_at 内部读的 就是链走版本,且强制 parent 必须为空。被移除的只是即将判定「不是策划根」那条路径上 的链走,顺带消掉同一条绑定被连着走两遍父链。 另外把 PLAN_GDD_APPROVAL_SOURCE 与 AGENT_RUNTIME_SUPERVISOR_PLAN_SOURCE 必须同值钉成 编译期断言:识别用前者、复核用后者,两者分处不同模块各自定义,一旦分叉每个策划根都会 先通过识别再被复核拒掉,全部塌成 needs-reconciliation,而且没有测试会指向这个原因。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>