服务器重启会杀死正在跑的 graph 节点背后的真实进程,但 graph_run_nodes.
status 永远停在 running(ceo 的两条唤醒路径都只认 blocked,对这个状态
完全不可见)——39 号文档真跑复盘撞出来的坑,这次补上。
1a:graph-engine.js 新增 sweepOrphanedRunningNodes(cutoffIso),复用
routeFailure 的 infra_flake 分支(不发明新状态),server/index.js 在
本次进程启动时刻挂一次开机扫描,排在其余「补一次全量扫描」钩子之前。
1b:新增 forceFailNode() + POST /:id/nodes/:nodeId/force-fail,补上
retry 端点管不到 running 节点这个缺口——人工/ceo 判定"这个真的救不
回来了"时的手动出口,转 fail 后交给既有失败路由处理,不发明新路径。
新增测试 12 例(graph-engine-orphan-sweep.test.js 4 例、
graph-run-force-fail.test.js 8 例),全量测试 1483/1487,零回归。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwG4b7Nq1NLR9eeE3M9Us9