Co-authored-by: claude-code <claude-code@javagil.de>
4.3 KiB
PR#43: Du bist dran Shows a Conflict the Agent Leaves
WARNING: This document describes only the change applied in this PR. It may already be outdated once the next PR is merged. Historic PR documentation is not maintained along with new PRs; treat it as a snapshot.
Problem
User request of 2026-10-12: a pull request with a merge conflict that its coding agent does not react to shows under "Du bist dran".
On 2026-10-12, PR#41 and PR#42 got conflicts after other pull requests merged into main.
Their agents did not react until the user noticed it.
Today a conflict marks only the user's own pull requests; a foreign one shows "Konflikt" in its detail line only.
Non-Goals
- No change of the flags of the user's own pull requests; a conflict there stays Nacharbeit at once.
- No flag for a draft: an agent that works on it is not stuck.
- No exact time of the conflict: Gitea tells only that a pull request conflicts now, not since when.
Specification
Feature: Du bist dran shows a conflict the agent leaves
Scenario#43.01: a conflict without a new commit for 30 minutes is stuck
… so that the user steps in when the agent does not rebase.
- Given a pull request of an agent that has conflicted with
mainfor 30 minutes without a new commit - When the user opens the overview
- Then "Du bist dran" lists it under Festgefahren with "Konflikt seit 30 min ohne neuen Commit"
Verified by
- GiteaSourceTest: "a foreign conflict without a new commit for 30 minutes is stuck".
Scenario#43.02: a fresh conflict is the agent's
… so that the agent has the time to rebase before the user is asked.
- Given a pull request of an agent that has conflicted with
mainfor 20 minutes - When the user opens the overview
- Then "Du bist dran" does not list the pull request
Verified by
- GiteaSourceTest: "a fresh foreign conflict is the agent's, a draft asks nothing".
Scenario#43.03: the conflict starts when main leaves the base of the pull request
… so that the time counts from the change of main, not from an older commit of the agent.
- Given a pull request of an agent with its last commit at 13:28,
and
mainthat left its base at 13:34 and conflicts with it - When the user opens the overview at 14:04
- Then "Du bist dran" shows "Konflikt seit 30 min ohne neuen Commit"
Verified by
- GiteaSourceTest: "a conflict counts from the later of the head commit and main leaving its base".
Solution
GiteaSource.flagsadds the Festgefahren flag "Konflikt seit … ohne neuen Commit" to an agent's pull request that has conflicted for 30 min (CONFLICT_AFTER).GiteaSource.conflictSincedates the conflict: the later of the head commit and the oldest commit ofmainthat the head lacks, from Gitea'scompare/<head>...<base>. The pull request'supdated_atdoes not fit, as each review of werkrevisor changes it.- The two requests run only for an agent's pull request that conflicts and is no draft.
- The overview translates the reason into English. The hint of Festgefahren names the agent alone: "der Agent kommt nicht weiter", no longer werkrevisor.
- The demo data show such a pull request.
- Version 0.23.0.
On 2026-10-12 this dates the conflict of PR#41 at 13:34, the merge of PR#40; its head commit is of 13:28.
Open Questions
- Which group shows the conflict?
User decision: Festgefahren, as RED without a new commit; agent and
maindo not get on. - How long may the agent leave a conflict? User decision: 30 min.
- From when is the time measured?
User decision: from the later of the head commit and the first commit of
mainafter the base of that head. Another merge intomaindoes not reset the time; the conflict may be dated a bit too early.
Additional Changes
- A work in progress no longer shows "Konflikt": Gitea's
mergeableis false for each one, e.g. for this PR while it wasWIP:. - The dashboard README no longer says that a requested review counts while werkrevisor runs; PR#42 changed that.