Skip to Content
デザインResolve コマンド設計

Resolve コマンド設計

目的

デフォルトブランチとのマージコンフリクトによってブロックされているプルリクエストに対して、メンテナーがトリガーできる @qwen-code /resolve コマンドを追加する。

対象範囲

最初のバージョンは意図的に保守的な設計としている:

  • このコマンドは QwenLM/qwen-code でのみ実行される。
  • リクエスト元には writemaintain、または admin の権限が必要である。
  • 対象はオープン状態のプルリクエストでなければならない。
  • プルリクエストのブランチはベースリポジトリ内に存在しなければならない。
  • フォークからのプルリクエストは、プッシュされる代わりにサポート対象外として報告される。
  • エージェントは GitHub トークンを受け取らない。ローカルでの編集とコミットのみが可能である。
  • 別の publish ステップで CI_DEV_BOT_PAT を注入し、プッシュとコメントを行う。

ワークフロー

  1. 既存の PR コマンドワークフローが issue_comment または workflow_dispatch を処理し、対象のプルリクエストを解決する。
  2. 認可ジョブが CI_BOT_PAT を使用して、リクエスト元の共同作業者権限をチェックする。
  3. resolve ジョブは、コメントトリガーに対して eyes リアクションで応答する。
  4. ジョブはプルリクエストのメタデータを読み取り、クローズ済み、ドラフト、コンフリクトなし、またはフォークからのプルリクエストを拒否する。
  5. 対象となるプルリクエストに対して、ジョブは永続化された認証情報を無効にしてプルリクエストのブランチをチェックアウトし、ベースブランチをフェッチして、ブランチがまだ期待される head SHA を指していることを検証する。
  6. Qwen Code は GitHub 認証情報なしで実行され、origin/<base> をマージし、コンフリクトを解決して結果を検証し、コミットしてサマリーアーティファクトを書き出す。
  7. 決定論的な検証ステップは、未解決のコンフリクト、サマリーの欠落、またはチェックの失敗時に失敗する。
  8. publish ステップは、元の head SHA に対して --force-with-lease でプッシュし、コンフリクト解決のサマリーをコメントする。

対象外

  • フォークからのプルリクエストへの自動プッシュ。
  • 外部コントリビューターのための代替プルリクエストの作成。
  • 古いコンフリクト済みプルリクエストの定期スキャン。
  • 直接のマージコンフリクト以外のマージ不可能状態の解決。
Last updated on