95 lines
4.4 KiB
Markdown
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
|
|
|
|
… 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
|
|
|
|
… 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
|
|
|
|
… 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.
|