Skip to content

cross-review: 修正中に PR のブランチへ別の push が入ると止まり、流し直しても同じ状態から止まる #2440

Open

Description

@takemi-ohama

何を見つけたか

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 #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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions