Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[Bug]: Forgejo skipped status keeps watch_pull_request pending when no required-check policy is set

オープン 初心者向け
#23,716 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
64/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
github, typescript
領域
devtools, testing

調査の方向性

packages/source-control-forgejo/src/server/forgejoPullRequestJson.tsから始めて、forgejoChecksがForgejoのジョブ状態をどのように対応付けているかを追い、その後evaluatePullRequestWatchを追って、これらの状態が全ステータスのゲートにどう影響するかを確認してください。報告されたsuccess、success、skippedの各ステータスについて、現在の動作と期待される結果を比較してください。ジョブが失敗せずに完了したとき、1つがスキップされた場合も含めて、監視がすべてのチェックに合格したと報告すれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Before submitting
  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.
Area

apps/server

Steps to reproduce
  1. Use a Forgejo repository whose base branch has no status-check policy (enable_status_check: false, so no required contexts).
  2. Add a workflow job that only runs on push, for example deploy: { needs: test, if: github.event_name == 'push' }.
  3. Open a pull request. Once CI finishes, the head commit reports:
    AI Review / review (pull_request)   success
    CI / test (pull_request)            success
    CI / deploy (pull_request)          skipped
    
  4. Call watch_pull_request for the pull request and let all jobs finish.
Expected behavior

The watch wakes the agent with "All 3 checks passed", because every job has finished and none failed.

Actual behavior

The watch never reports the passed checks. forgejoChecks in packages/source-control-forgejo/src/server/forgejoPullRequestJson.ts maps every state other than success, failure and error to pending, so the skipped job keeps the all-status gate open. In our case the watch stayed silent for almost six hours until we merged the pull request by hand.

This is the part of #16575 that its closing comment left open ("skipped statuses still block watches when required-check policy is absent"); the comment asked for a separate issue. #18775 covers branches with a required-check policy. #16668 already contains the fix for this case. Its description notes that no real Forgejo instance was used; this report confirms the failure on a live Forgejo 17.0.0 instance.

Impact

Major degradation or frequent failure

Every pull request in a repository with a push-only job hits this, so watch_pull_request cannot be used there.

Version or commit

0.1.2-nightly.20261021.3499 (already contains #18775)

Environment

T3 Code desktop nightly on macOS 27.0.1, Forgejo 17.0.0+gitea-1.22.0

Logs or stack traces
pull request watch ended {"reason":"merged","minutes":348,"quietMinutes":348,"wakes":0,"reads":172,"partial":false}

We also ran the installed nightly's bundled forgejoChecks and evaluatePullRequestWatch against the three statuses above:

  • current mapping: skipped becomes pending, passed: false, no change reported
  • with skipped preserved, as in #16668: the same evaluator reports checks-passed with count: 3
Workaround

Required status checks on the base branch let the watch gate only on those (#18775), but that changes the merge policy, and a required context that never reports (for example a workflow with paths-ignore on a docs-only change) then blocks merging. We currently poll the Forgejo API from the agent instead of using watch_pull_request.

Investigated with an agent in T3 Code; the values above come from the live instance and the installed app bundle.

主要言語
TypeScript
スター
24.8k
フォーク
6.4k
平均マージ
4時間 35分
マージ済み PR(30日)
174

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

pingdotgg/t3code のほかの issue

pingdotgg/t3code の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。