## 何が起きたか 2026-11-01 08:40 JST、スプリント m26-2 の検査のプラン(`6-check.json`)が test-all で止まった(#2317 の待ち)ため、キュー(queue-8)を強制終了して `supervise.py queue --resume .ndf/tmp/sprint-m26-2/done-1.json --from check=ready` を打った。 ところが ready からではなく、強制終了した前の起動の途中(test-all)から続き、同じ待ちでまた止まった。ログ(`.ndf/tmp/sprint-m26-2/queue-9.log`): ``` supervise-queue: .ndf/tmp/sprint-m26-2/6-check.json を ready から続ける(--from) [ndf supervise] 落ちた前の起動の queue-3df23b8c56d1-8 を続ける(済んだステップは流し直さない) ``` ## 原因 `supervise_lib/queue.py` の `queue` は `durable.resolve(prefix)` が `continue`(前の起動が PENDING のまま残っている)を返すと、`args["starts"]` を渡しても新しい実行の回を作らず、前の耐久ワークフローを回復する。回復した側は前の起動の入力(`--from check=review`)で動くため、新しい `--from` が効かない。`launch_queue` の `fresh` は「プランの並びが変わったとき」だけ真になり、`--from` が変わったときは真にならない。 ## 回避 `DBOSClient(system_database_url="sqlite:///$HOME/.local/state/ndf/dbos/queue-<鍵>.sqlite").cancel_workflow(<id>, cancel_children=True)` で途中の耐久ワークフローを取り消してから打ち直すと、`--from` のとおり ready から流れた(queue-10)。 ## 受け入れ条件 - [ ] `queue --resume ... --from <プラン>=<ステップ>` を打ったとき、前の起動が途中で残っていても、`--from` のステップから新しい実行の回で流れる(前の途中の耐久ワークフローは子ごと止める) - [ ] `--from` も `--only` も無い打ち直しは、今までどおり前の起動を続ける - [ ] 上の 2 つを確かめるテストがある
Activity