结论:新长任务不再用孤立 PID 和半截日志判断状态。一个原子 JSON 同时保存目标、成功标准、阶段、进程、心跳、退出码、迁移历史和恢复命令。
三种终态
complete
子进程退出 0,并记录结束时间与完整迁移。
failed子进程非零退出,保留退出码和合并日志。
interruptedrunner 中断,或 inspect 发现 runner 与 child 均不存活;明确进入恢复路径,不伪装成完成。
核心纠错
PID 文件只能证明“曾经启动”。inspect 必须同时检查 runner 与 child;两者都不活且状态未终结时判 stale,reconcile 后写 interrupted 与 recovery command。
安全边界
状态只保存人类可读 command label,不持久化可能含 secret 的真实命令;不会自动重放可能产生副作用的操作。当前只覆盖单机进程,不提供分布式锁或 exactly-once。
验收
单元测试覆盖原子写入、状态迁移和失联 reconcile;集成测试覆盖成功、失败和中断三条真实路径。