[Bug]: Forgejo skipped status keeps watch_pull_request pending when no required-check policy is set
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 64/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- github, typescript
Direzione di ricerca
Inizia da packages/source-control-forgejo/src/server/forgejoPullRequestJson.ts e segui come forgejoChecks mappa gli stati dei job Forgejo; poi segui evaluatePullRequestWatch per vedere come questi stati influiscono sulla condizione relativa a tutti gli stati. Confronta il comportamento attuale per gli stati segnalati success, success e skipped con il risultato atteso. Il lavoro è completato quando il monitoraggio indica che tutti i controlli sono superati se i job terminano senza errori, anche quando uno viene saltato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- 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_requestfor 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:
skippedbecomespending,passed: false, no change reported - with
skippedpreserved, as in #16668: the same evaluator reportschecks-passedwithcount: 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.
- Lingua principale
- TypeScript
- Stelle
- 24.8k
- Fork
- 6.4k
- Merge medio
- 4h 35m
- PR unite (30g)
- 174
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di pingdotgg/t3code
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
bug needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
MCP endpoint matches the Authorization scheme case-sensitively and logs the same reason for "absent" and "wrong scheme" (ChatGPT connector gets missing_bearer_token)Forse già presa @shethshlok l’ha presa 1 giorno fa. Apertabug needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di pingdotgg/t3code
Issue simili
-
level/task type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
wazuh/wazuh-dashboard-plugins#9508 ·
I maintainer di solito rispondono entro 1 giorno
-
Testnet EOL page links Zonescan mainnetForse già presa @napelvs l’ha presa oggi. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Azure-Samples/azure-search-openai-demo#3249 ·
I maintainer di solito rispondono entro 1 giorno
-
[Docs] docs/architecture.mermaid leaves out 21 of the 51 src/ directoriesForse già presa @uyg7x l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement status:needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
dongdongbh/Mindwtr#1438 ·
I maintainer di solito rispondono entro 1 giorno