Files
werkregie/doc/prs/2026-10-20-PR#99-agent-works-url.md
claude-code 367947a481
werkator build succeeded after 01:03
werkator/deploy build succeeded after 00:24
werkator/mutation build failed after 18:27
werkator/vulnerability-data build succeeded after 00:25
Agent arbeitet also for a session that named the pull request in a command (#99)
Co-authored-by: claude-code <claude-code@javagil.de>
2026-10-20 18:28:18 +02:00

95 lines
4.4 KiB
Markdown

# PR#99: Agent arbeitet Also for a Session That Acted on the Pull Request by Its URL
Version: minor
> **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.
## Related Links
- [werkregie PR#96](https://git.javagil.de/mi/werkregie/pulls/96): "Agent arbeitet", by the branch.
- [werkregie PR#98](https://git.javagil.de/mi/werkregie/pulls/98): the session of each pull request, by its URL in the transcripts.
## Problem
"Agent arbeitet" holds back the user's approval while an agent's session works on the pull request.
It finds the session only by the branch, in a checkout of the same repository.
A session in a checkout of another repository, e.g. the main checkout of hs.hsadmin.ng
working on a pull request of a worktree branch, never holds back the approval;
the user approves while the agent still pushes.
## Non-Goals
- No change of the session that a row shows; that stays as in werkregie PR#98.
- No other time limit than the 10 minutes of werkregie PR#96.
## Specification
### Feature: Agent arbeitet by the URL of the pull request
#### Scenario#99.01: a session in a checkout of another repository works on the pull request
&hellip; so that the user does not approve while the agent of another checkout still works on it.
- **Given** a pull request that waits for the user's approval,
and a session in a checkout of another repository that ran `watch-pr` with its URL 3 minutes ago
- **When** werkregie shows the pull request
- **Then** it shows "Agent arbeitet" with the title of that session instead of "Dein Approval"
##### Verified by
- [AuthorsTest "a session in another repository that named the pull request in a command within 10 minutes holds back the approval"](../../dashboard/src/test/kotlin/de/hoennig/werkregie/dashboard/AuthorsTest.kt)
- [TranscriptPullsTest "the latest mention counts, and a command once is an action for good"](../../dashboard/src/test/kotlin/de/hoennig/werkregie/dashboard/sources/TranscriptPullsTest.kt)
#### Scenario#99.02: a text about the pull request does not count
&hellip; so that a report about the pull request of another session does not delay the approval.
- **Given** a pull request that waits for the user's approval,
and a session that wrote its URL in a text 3 minutes ago, but in no command
- **When** werkregie shows the pull request
- **Then** it shows "Dein Approval"
##### Verified by
- [AuthorsTest "a text about the pull request, a command older than 10 minutes or an older relay holds back nothing"](../../dashboard/src/test/kotlin/de/hoennig/werkregie/dashboard/AuthorsTest.kt)
#### Scenario#99.03: a command older than 10 minutes holds back nothing
&hellip; so that a finished agent does not hold back the approval for long.
- **Given** a pull request that waits for the user's approval,
and a session that named its URL in a command 11 minutes ago
- **When** werkregie shows the pull request
- **Then** it shows "Dein Approval"
##### Verified by
- [AuthorsTest "a text about the pull request, a command older than 10 minutes or an older relay holds back nothing"](../../dashboard/src/test/kotlin/de/hoennig/werkregie/dashboard/AuthorsTest.kt)
## Solution
`PullMention` gets `actedAt`, the time of the latest command that named the pull request;
`at` stays the time of the latest mention of any kind.
`Authors.working` takes the session whose `actedAt` for the pull request is within 10 minutes, the latest first;
else the session on its branch, as before.
## Release Notes
"Agent arbeitet" also shows while a session in a checkout of another repository works on the pull request,
e.g. with `watch-pr`.
## Open Questions
- [x] Does a text about the pull request count?
No, only a command.
A session that started others repeats their reports with the links to their pull requests;
its text would else hold back the approval of a pull request that is done.
- [x] Why a time of its own for the commands?
`at` is the latest mention of any kind, and `acted` stays true once a command named the pull request.
A text 3 minutes after a command 1 hour ago would else count as an action 3 minutes ago.
- [x] What does a relay older than this PR send?
No `actedAt`: its sessions hold back the approval by branch only, as before.
The server ignores the unknown field `actedAt` of a newer relay.