文档:核实删调用身份守卫的前置判据,收敛第 5 步口径
- ADR §9 记录核实结论:取消兜底本来就同时释放占用、补写 turn.completed 并踢队列,删守卫不需要新增无条件终态;连接死亡的失败事实由 app-server 连接层落地 - 实施计划第 5 步改写:60 秒启动窗口闸门改挂 Thread Manager 的占用登记年龄,读者改读 direct_active_turn_id_at,TurnAlreadyRunning 一并删 - decision-log 追加 2026-09-30 条目,记录核实过程、决策与影响范围
This commit is contained in:
@@ -85,9 +85,15 @@ Thread Manager 在一个回合收口**之后**原子地做:取队首 → 登
|
||||
- CLI 一退,`DirectTurnError::TurnAlreadyRunning` 的两个生产点(调用身份守卫、占用登记)都没有调用方,
|
||||
它连同前端"同一轮消息仍在处理中"文案、专属分支与测试一起删。
|
||||
- `DirectTaonierActiveInvocationGuard` 的**身份**与 Thread Manager 的 `active_turn.turn_id` 是同一件事的两份记录
|
||||
(GUI 路径下同源字符串),而 09-23 ADR 立的是"同一件事只许有一处真相"。CLI 退役后它的硬阻塞消失:第二步让那五个读者
|
||||
改读 Thread Manager 的活动回合身份,守卫连同它的测试与 60 秒卡死兜底一起删。删之前必须确认取消路径的无条件终态
|
||||
仍然解得开"回合卡死"(那次兜底来自真实事故 `d833ca9d3`)。
|
||||
(GUI 路径下同源字符串),而 09-23 ADR 立的是"同一件事只许有一处真相"。CLI 退役后它的硬阻塞消失:五个读者
|
||||
(`direct_execution` / `direct_tool_bridge` / `direct_validation` / `direct_project_context` / 付费美术重生成)
|
||||
改读 Thread Manager 的活动回合身份,守卫连同它的测试一起删,不再有第二份进程内记录。
|
||||
- 删守卫的前置判据**已核实(2026-09-30)**,不需要新增"取消路径补无条件终态":`d833ca9d3` 的兜底路径本来就
|
||||
同时做三件事——释放占用、往事件流补一条 `turn.completed{aborted}`(否则前端会永远停在运行中)、调
|
||||
`complete_direct_thread_turn` 解除占用。删掉的只有 `DirectTaonierActiveInvocationGuard` 那张进程内表;
|
||||
唯一独有的东西是 60 秒启动窗口闸门,改挂在 Thread Manager 的占用登记年龄上
|
||||
(`direct_stale_turn_for_release` 的 `NeverReachedExecutor` 分支)。连接死亡那条失败事实由 app-server
|
||||
连接层自己落地(`ab970b9fd`),与守卫无关。
|
||||
|
||||
## 备选方案与取舍
|
||||
|
||||
|
||||
Reference in New Issue
Block a user