Files
Genarrative/apps
lhk229 cb5af31e79 P4:先识别 Fast GDD 再走绑定父链,别让祖先坏掉误伤非策划 run
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>
2026-08-17 07:08:47 +00:00
..
2026-07-17 16:56:46 +08:00