agent watch: WIP-PRs bei Konfliktprüfung nicht als Merge-Konflikt werten #55
No reviewers
Labels
No labels
agent:done
agent:ready
agent:working
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frank/forgecli!55
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/issue-54-agent-watch-wip-prs-bei-konfliktprüfung"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
PRHasMergeConflictignoriertmergeable=falsebei WIP-/Draft-PRs, solange kein expliziter Konfliktstatus (conflicts/dirty) vorliegtIsWIPPRundHasWIPPrefixfür WIP-Erkennung per Titelpräfix und Draft-FlagPullRequestumdraft-Feld ergänztTest plan
TestPRHasMergeConflict: WIP +mergeable=falseohne Konflikt → kein KonfliktTestPRHasMergeConflict: WIP +mergeable_state=conflicts/dirty→ KonfliktTestIsWIPPR: Titelpräfix und Draft-Flaggo test ./internal/agent/...grünFixes #54
🚧 WIP pull request opened — linked to issue #54. Agent is working…
💭 Agent progress
Ich werde Issue #54 für die Forge CLI umsetzen.
WIP-PRs mit
WIP:-Titel sollen nicht als Merge-Konflikte gelten. Nur echte Merge-Konflikte sollen die Reparatur auslösen. Unit-Tests sind nötig. Ich untersuche den Code.Ich schaue mir zuerst die betroffenen Stellen und die bestehende WIP-/Konfliktlogik an.
💭 Agent progress
Ich lese die bestehenden Tests und die Datei pipeline.go, um den vollständigen Kontext zu verstehen.
Ich prüfe, ob PullRequest bereits ein Draft-Feld besitzt oder hinzugefügt werden muss.
💭 Agent progress
Ich verstehe das Problem.
PRHasMergeConflicterkennt WIP-PRs fälschlich als Merge-Konflikte.Die Funktion erkennt
mergeable=falseund den Status "conflicts" oder "dirty" als Merge-Konflikte. Für WIP-PRs soll nur explizite Konfliktzustände gelten. Ich prüfe die Forgejo-API auf ein Draft-Feld und die Finalisierung des Titels.💭 Agent progress
Die Funktion
IsWIPPRmuss inpr_wipimplementiert werden.IsWIPPRprüft Titel auf WIP-Präfix und Draft-Status.PRHasMergeConflictsoll WIP-PRs nur als Merge-Konflikt werten, wennmergeable_state„conflicts“ oder „dirty“ ist. Nicht-WIP-PRs bleiben unverändert.Der Fix ändert
PRHasMergeConflict: Beimergeable=falsewird für WIP-PRs direktfalsezurückgegeben. Echte Merge-Konflikte bleiben erhalten.Ein
Draft-Feld kommt insPullRequest-Struct.IsWIPPRerkennt WIP-PRs über den Titel oder diesen Flag. Eine HilfsfunktionHasWIPPrefixprüft den Präfix.IsWIPPRprüft zuerst denDraft-Flag. Dann folgt die Prüfung auf denWIP:-Titelpräfix.Vier Szenarien müssen getestet werden:
WIP-PR mit
mergeable=falseund keinem Konfliktzustand → kein Merge-KonfliktWIP-PR mit
mergeable_state=conflicts→ Merge-KonfliktNicht-WIP-PR mit
mergeable=false→ weiterhin Merge-KonfliktWIP-PR mit
mergeable_state=dirty→ Merge-KonfliktTestPRHasMergeConflictmuss an das neue Verhalten angepasst werden.Auch
pipeline.gowird durch den Fix betroffen. Während des Babysittens bleibt ein WIP-PR offenbar aktiv. Ein echter Merge-Konflikt während dieser Phase sollte weiterhin behoben werden.mergeable=falseohne Konfliktzustand führt nun nicht mehr zur automatischen Behebung. Die Implementierung und Tests folgen.Ich implementiere
IsWIPPRund passePRHasMergeConflictan, damit WIP-PRs mitmergeable=falseohne echten Konfliktstatus nicht mehr fälschlich als Konflikt gelten.💭 Agent progress
Die Tests in worktree_test.go werden aktualisiert und neue Tests für pr_wip_test.go ergänzt.
💭 Agent progress
Die Tests werden ausgeführt, um sicherzustellen, dass alles korrekt funktioniert.
💭 Agent progress
Tests passed. Running the full agent package tests now. Then committing and pushing.
💭 Agent progress
Alle Tests bestehen. Die Änderung ist intern und verändert das sichtbare Verhalten nicht.
Die Änderung wird in zwei commits übermittelt: zuerst die Kernlogik, dann die Tests.
Alle Tests sind grün. Ich committe und pushe die Änderungen in zwei logischen Schritten.
💭 Agent progress
Die Implementierung wird in zwei Commits erfolgen. Der erste betrifft die Kernlogik in forge.go und pr_wip.go.
Der zweite Commit umfasst Tests. Beide Commits werden anschließend gepusht.
💭 Agent progress
Der erste Commit wurde gepusht. Nun werden die Tests committet.
💭 Agent progress
Die Implementierung ist abgeschlossen. Ich prüfe den Git-Status und erstelle das finale Zusammenfassung mit den geforderten Markern.
WIP: #54 agent watch: WIP-PRs bei Konfliktprüfung nicht als Merge-Konflikt wertento agent watch: WIP-PRs bei Konfliktprüfung nicht als Merge-Konflikt werten✅ forge agent finished implementation
test(agent): cover WIP vs merge conflict detectionAgent output (tail)
☑️ ToDos checked off
forge agent watch --helpnur anpassen, falls Nutzerverhalten sich sichtbar ändert🟢 CI green (attempt 1/3)
https://repository.hildebrandt.io/frank/forgecli/actions/runs/123
💭 Agent progress
Die Implementierung ist abgeschlossen. Die finale Antwort wird auf Deutsch verfasst.
Issue #54 ist umgesetzt. WIP-PRs werden bei der Konfliktprüfung nicht mehr fälschlich als Merge-Konflikt gewertet.
Änderungen
PRHasMergeConflict(internal/agent/forge.go): Wenn ein PR als WIP gilt (WIP:-Titel oderdraft: true) und nurmergeable=falsemeldet, wird das nicht mehr als Konflikt gezählt. Explizite Zuständeconflicts/dirtylösen weiterhin Reparaturen aus — auch bei WIP-PRs.IsWIPPR/HasWIPPrefix(internal/agent/pr_wip.go): Neue Hilfsfunktionen zur WIP-Erkennung;StripWIPPrefixnutztHasWIPPrefix.PullRequest.Draft: Neues JSON-Feld für Forgejo-Draft-PRs.Die bestehenden Aufrufer in
collectRepoPRFixesundpipeline.goprofitieren automatisch von der angepasstenPRHasMergeConflict-Logik. Wiki und--helpblieben unverändert — das Nutzerverhalten ist intern, nicht sichtbar anders.Summary
PRHasMergeConflictignoriertmergeable=falsebei WIP-/Draft-PRs, solange kein expliziter Konfliktstatus (conflicts/dirty) vorliegtIsWIPPRundHasWIPPrefixfür WIP-Erkennung per Titelpräfix und Draft-FlagPullRequestumdraft-Feld ergänztTest plan
TestPRHasMergeConflict: WIP +mergeable=falseohne Konflikt → kein KonfliktTestPRHasMergeConflict: WIP +mergeable_state=conflicts/dirty→ KonfliktTestIsWIPPR: Titelpräfix und Draft-Flaggo test ./internal/agent/...grünFixes #54