You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: Forgejo skipped status keeps watch_pull_request pending when no required-check policy is set #23716
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
Use a Forgejo repository whose base branch has no status-check policy (enable_status_check: false, so no required contexts).
Add a workflow job that only runs on push, for example deploy: { needs: test, if: github.event_name == 'push' }.
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
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.
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.
Activity