agent watch: WIP-PRs bei Konfliktprüfung nicht als Merge-Konflikt werten #54

Closed
opened 2026-07-13 01:53:46 +02:00 by frank · 1 comment
Owner

Problem

Bei der automatischen Konfliktbehebung (collectPRFixes / PRHasMergeConflict / --pr-Babysit) werden Work-in-Progress-PRs nicht sauber von echten Merge-Konflikten unterschieden.

Forge öffnet im --pr-Modus früh einen WIP-PR (WIP: #<issue> …). Solange der Titel noch WIP: trägt (bzw. der PR als Draft/WIP gilt), kann die Forgejo-API mergeable: false melden — ohne dass Git-Merge-Konflikte vorliegen. Genau das darf nicht als resolve_conflicts-Reparatur gewertet werden.

Aktuell reicht in PRHasMergeConflict bereits mergeable=false (außer blocked/unknown), um einen Konflikt-Fix zu queueuen. WIP allein ist aber noch kein Konflikt.

Erwartetes Verhalten

  1. WIP ≠ Konflikt: Ein PR mit WIP:-Titel (und ggf. Draft-Flag) darf nur dann in die automatische Konfliktbehebung, wenn wirklich ein Merge-Konflikt vorliegt (mergeable_state z. B. conflicts/dirty, oder verifizierter Git-Konflikt gegen die Base).
  2. Genauere Prüfung: Bei WIP-PRs mergeable=false allein nicht als Konflikt behandeln; Status und ggf. Base-Merge explizit prüfen.
  3. Echte Konflikte weiter beheben: Hat ein WIP-PR tatsächlich Konflikte mit der Base, soll die bestehende resolve_conflicts-Pipeline weiterhin greifen — WIP soll Reparaturen nicht pauschal aussperren.
  4. Tests: Abdecken, dass WIP + mergeable=false ohne Konflikt-State keinen prFixConflict auslöst; WIP + mergeable_state=conflicts schon.

Betroffene Stellen

  • internal/agent/forge.goPRHasMergeConflict
  • internal/agent/prfix.gocollectRepoPRFixes
  • internal/agent/pipeline.go — Babysit / fixMergeConflict
  • internal/agent/pr_wip.go — WIP-Erkennung (StripWIPPrefix / Titelpräfix)

Akzeptanzkriterien

  • WIP-PRs ohne echten Merge-Konflikt werden nicht als Konflikt-Reparatur gequeued
  • WIP-PRs mit nachgewiesenem Merge-Konflikt werden weiterhin repariert
  • Unit-Tests für die Unterscheidung WIP vs. Konflikt
  • Wiki/forge agent watch --help nur anpassen, falls Nutzerverhalten sich sichtbar ändert
## Problem Bei der automatischen Konfliktbehebung (`collectPRFixes` / `PRHasMergeConflict` / `--pr`-Babysit) werden Work-in-Progress-PRs nicht sauber von echten Merge-Konflikten unterschieden. Forge öffnet im `--pr`-Modus früh einen WIP-PR (`WIP: #<issue> …`). Solange der Titel noch `WIP:` trägt (bzw. der PR als Draft/WIP gilt), kann die Forgejo-API `mergeable: false` melden — **ohne** dass Git-Merge-Konflikte vorliegen. Genau das darf **nicht** als `resolve_conflicts`-Reparatur gewertet werden. Aktuell reicht in `PRHasMergeConflict` bereits `mergeable=false` (außer `blocked`/`unknown`), um einen Konflikt-Fix zu queueuen. WIP allein ist aber noch kein Konflikt. ## Erwartetes Verhalten 1. **WIP ≠ Konflikt:** Ein PR mit `WIP:`-Titel (und ggf. Draft-Flag) darf nur dann in die automatische Konfliktbehebung, wenn wirklich ein Merge-Konflikt vorliegt (`mergeable_state` z. B. `conflicts`/`dirty`, oder verifizierter Git-Konflikt gegen die Base). 2. **Genauere Prüfung:** Bei WIP-PRs `mergeable=false` allein nicht als Konflikt behandeln; Status und ggf. Base-Merge explizit prüfen. 3. **Echte Konflikte weiter beheben:** Hat ein WIP-PR tatsächlich Konflikte mit der Base, soll die bestehende `resolve_conflicts`-Pipeline weiterhin greifen — WIP soll Reparaturen nicht pauschal aussperren. 4. **Tests:** Abdecken, dass WIP + `mergeable=false` ohne Konflikt-State **keinen** `prFixConflict` auslöst; WIP + `mergeable_state=conflicts` schon. ## Betroffene Stellen - `internal/agent/forge.go` — `PRHasMergeConflict` - `internal/agent/prfix.go` — `collectRepoPRFixes` - `internal/agent/pipeline.go` — Babysit / `fixMergeConflict` - `internal/agent/pr_wip.go` — WIP-Erkennung (`StripWIPPrefix` / Titelpräfix) ## Akzeptanzkriterien - [x] WIP-PRs ohne echten Merge-Konflikt werden nicht als Konflikt-Reparatur gequeued - [x] WIP-PRs mit nachgewiesenem Merge-Konflikt werden weiterhin repariert - [x] Unit-Tests für die Unterscheidung WIP vs. Konflikt - [x] Wiki/`forge agent watch --help` nur anpassen, falls Nutzerverhalten sich sichtbar ändert
Author
Owner

🤖 forge agent started

  • Agent: cursor-agent
  • Model: (default)
  • Mode: pr
  • Trigger: assignee=agent
  • Open ToDos: 4

agent watch: WIP-PRs bei Konfliktprüfung nicht als Merge-Konflikt werten — Bei der automatischen Konfliktbehebung (collectPRFixes / PRHasMergeConflict / --pr-Babysit) werden Work-in-Progress-PRs nicht sauber von echten Merge-Konflikten unterschieden.

🤖 **forge agent started** - Agent: `cursor-agent` - Model: `(default)` - Mode: `pr` - Trigger: `assignee=agent` - Open ToDos: 4 agent watch: WIP-PRs bei Konfliktprüfung nicht als Merge-Konflikt werten — Bei der automatischen Konfliktbehebung (`collectPRFixes` / `PRHasMergeConflict` / `--pr`-Babysit) werden Work-in-Progress-PRs nicht sauber von echten Merge-Konflikten unterschieden.
frank closed this issue 2026-07-13 01:59:54 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
frank/forgecli#54
No description provided.