fix: aiagent.sh の必須チェック対応マージ待機ロジックを private 側から同期#18
Merged
Conversation
## 変更内容 `_aiagent_finish()` の `gh pr merge "$pr_num" --merge || return 1` を、即時マージ→失敗時フォールバックの2段構えに変更(private 正本 `~/dotfiles/zsh/neo/aiagent.sh` の Issue 15 / PR #97 で導入済みのロジックを本リポの公開ミラーに移植)。 1. `gh pr merge "$pr_num" --merge` をまず試みる。成功すれば従来どおり続行。 2. 失敗した場合(必須ステータスチェック未完了等)、`gh pr merge "$pr_num" --merge --auto` で auto-merge を有効化。有効化自体が失敗したら `return 1`。 3. `gh pr checks "$pr_num" --watch --fail-fast` でチェック完了を待つ。チェックが fail したら `return 1`(マージしない)。 4. auto-merge は checks 通過後に GitHub 側で非同期にマージされるため、`gh pr view "$pr_num" --json state --jq .state` を5秒間隔でポーリングし `MERGED` になるまで待つ。上限180秒(3分)で諦めて `return 1`(手動対応を促すメッセージ付き)。 必須チェックのないリポでは手順1で即マージが成功するため従来どおり完走する。必須チェックのあるリポ(本リポ PR #16 で発生した事象)では手順2〜4を経てマージ完了まで待ってから後続処理(worktree/ブランチ掃除・Issueクローズ)へ進む。 private 正本には本Issueのスコープ外の `pr_merge_sha` 取得(別Issueで追加済みの既存機能)が同ブロック前後に存在するが、今回は移植対象外として含めていない。 ## 静的確認結果 - `zsh -n zsh/functions/aiagent.sh`: OK(構文エラーなし) - `nix flake check`: 評価エラーなし(既存の設定非推奨警告のみ、本変更と無関係) - `git diff --name-only --cached`: zsh/functions/aiagent.sh(issueの「対象」と完全一致) - private 正本 `~/dotfiles/zsh/neo/aiagent.sh` の該当ブロック(PR #97 差分)と diff 目視確認: 移植ブロック自体は完全一致。差分は private 側にのみ存在する `pr_merge_sha` 関連2箇所のみで、これは本Issueのスコープ外(別Issueで追加された既存機能) - caller整合性: `_aiagent_finish()` は `issue-finish` からのみ呼ばれ、シグネチャ変更なし。呼び出し元に変更不要 ## 検証手順 実マージを伴う動作確認は本Issueのスコープ外(Builder はリモート・実行系コマンドに触れない)。次回 user が `issue-finish` を実行する際に確認する: - 必須ステータスチェックのないリポ: 従来どおり即マージで完走することを確認 - 必須ステータスチェックのあるリポ(本リポ dotfiles-public 等): `gh pr merge --merge` が失敗 → auto-merge 有効化 → `gh pr checks --watch` でCI待機 → マージ完了後に後続処理まで完走することを確認
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
変更内容
_aiagent_finish()のgh pr merge "$pr_num" --merge || return 1を、即時マージ→失敗時フォールバックの2段構えに変更(private 正本~/dotfiles/zsh/neo/aiagent.shの Issue 15 / PR #97 で導入済みのロジックを本リポの公開ミラーに移植)。gh pr merge "$pr_num" --mergeをまず試みる。成功すれば従来どおり続行。gh pr merge "$pr_num" --merge --autoで auto-merge を有効化。有効化自体が失敗したらreturn 1。gh pr checks "$pr_num" --watch --fail-fastでチェック完了を待つ。チェックが fail したらreturn 1(マージしない)。gh pr view "$pr_num" --json state --jq .stateを5秒間隔でポーリングしMERGEDになるまで待つ。上限180秒(3分)で諦めてreturn 1(手動対応を促すメッセージ付き)。必須チェックのないリポでは手順1で即マージが成功するため従来どおり完走する。必須チェックのあるリポ(本リポ PR #16 で発生した事象)では手順2〜4を経てマージ完了まで待ってから後続処理(worktree/ブランチ掃除・Issueクローズ)へ進む。
private 正本には本Issueのスコープ外の
pr_merge_sha取得(別Issueで追加済みの既存機能)が同ブロック前後に存在するが、今回は移植対象外として含めていない。静的確認結果
zsh -n zsh/functions/aiagent.sh: OK(構文エラーなし)nix flake check: 評価エラーなし(既存の設定非推奨警告のみ、本変更と無関係)git diff --name-only --cached: zsh/functions/aiagent.sh(issueの「対象」と完全一致)~/dotfiles/zsh/neo/aiagent.shの該当ブロック(PR #97 差分)と diff 目視確認: 移植ブロック自体は完全一致。差分は private 側にのみ存在するpr_merge_sha関連2箇所のみで、これは本Issueのスコープ外(別Issueで追加された既存機能)_aiagent_finish()はissue-finishからのみ呼ばれ、シグネチャ変更なし。呼び出し元に変更不要検証手順
実マージを伴う動作確認は本Issueのスコープ外(Builder はリモート・実行系コマンドに触れない)。次回 user が
issue-finishを実行する際に確認する:gh pr merge --mergeが失敗 → auto-merge 有効化 →gh pr checks --watchでCI待機 → マージ完了後に後続処理まで完走することを確認