## 何を見つけたか cross-review の収束ループが修正のコミットを作っている間に、同じ Pull Request のブランチへ別の push が入ると、ループは止まる。修正の push が non-fast-forward で拒否され、`state.py merge-fix` が終了コード 1 を返すためである。プランを `--resume ... --from <プラン>=sync-body` で流し直しても、レビュー用の worktree(`/tmp/ndf-worktrees/<repo>/pr<番号>`)と `.cross_review/` の状態が前の回のまま残る。そのため、同じ拒否で再び止まる。 2026-11-02、設計 PR https://github.com/devbasex/ai-plugins/pull/2437 で 2 回起きた。conductor が設計文書へ 5 コミットを push している間に、レビューは修正コミット `92880b345` を作っていた。直し方は手作業だった。修正コミットを設計のブランチへ cherry-pick し、worktree を `origin/<ブランチ>` へ合わせ、`.cross_review/` を退避した。 ## なぜこの変更の範囲外なのか #2436 は並列開発のオーガナイザーの設計である。cross-review の駆動と状態の扱いは、#2436 の受け入れ条件にも直す対象にも入っていない。 ## 直さないと何が起きるか レビューの途中で人や別のレーンが同じ PR へ push すると、プランは強制 push(C4)を避けて止まる。流し直しても止まり続ける。並列開発(#2436)では、同じ PR へ複数の書き手が入る機会が増える。 ## 起票者の推定 - 修正の push が拒否されたら、取り込み(rebase か merge)を 1 回試みてから止まる - 流し直したときは、worktree を origin の先頭へ合わせ、自分の未送信のコミットだけを載せ直す ## 由来 #2436 の設計 PR 2437 の設計レビュー(`.ndf/sprints/sprint-p2436/1-design-2436-state/report.md`)
Activity