68 lines
3.0 KiB
Markdown
68 lines
3.0 KiB
Markdown
# PR#44: a writing-rule violation is a line comment and holds the merge
|
|
|
|
> **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.
|
|
|
|
## The Problem
|
|
|
|
Since PR#32, a GREEN review with open hints approves, but holds the automerge
|
|
until each line comment of werkrevisor has a reply and is resolved.
|
|
A violation of the writing rules, e.g. a line longer than 128 characters, is only a line of the result comment.
|
|
It gets no line comment, so it does not hold the merge:
|
|
on 2026-10-07 a GREEN PR merged with such a violation, and its PR document is now a fixed state with the long line.
|
|
|
|
## Non-Goals
|
|
|
|
- No change of the writing rules themselves.
|
|
- No change for the other reasons in the result comment, e.g. "model recommends merge with caution".
|
|
|
|
## The Scenarios
|
|
|
|
### Feature: writing-rule violations hold the merge like the hints of the model
|
|
|
|
A hint is a line comment of werkrevisor that leaves the verdict GREEN, but holds the merge until it is resolved.
|
|
|
|
#### Scenario#44.01: a writing-rule violation is a line comment that holds the merge
|
|
|
|
So that the author fixes the violation or answers it before the PR merges.
|
|
|
|
- **Given** automerge with `[gate] hints_hold_merge = true`
|
|
- **When** a PR adds a line longer than `[writing] max_line_length`, and the review is GREEN
|
|
- **Then** the violation is a line comment at that line
|
|
- **and** werkrevisor approves, but schedules no merge
|
|
|
|
##### Verified by
|
|
|
|
- [test_hints_hold_merge: test_a_writing_rule_violation_is_a_line_comment_that_holds_the_merge](../../tests/test_hints_hold_merge.py)
|
|
|
|
#### Scenario#44.02: a resolved hint releases the merge
|
|
|
|
So that a reply is enough when the author keeps a line on purpose.
|
|
|
|
- **Given** automerge is on
|
|
- **and** werkrevisor rated the PR GREEN
|
|
- **and** werkrevisor wrote a hint as a line comment, e.g. on a line longer than 128 characters
|
|
- **and** the merge waits for this hint
|
|
- **and** the author resolved the hint
|
|
- **When** the review runs again for the same commit
|
|
- **Then** werkrevisor schedules the merge
|
|
|
|
##### Verified by
|
|
|
|
- [test_hints_hold_merge: test_a_resolved_writing_rule_comment_releases_the_merge](../../tests/test_hints_hold_merge.py)
|
|
- [test_hints_hold_merge: test_a_restarted_review_schedules_the_merge_once_all_hints_are_resolved](../../tests/test_hints_hold_merge.py)
|
|
|
|
## The Solution
|
|
|
|
- Each writing-rule violation of the changed lines becomes a line comment of the bot review, at most 10 per review;
|
|
further violations stay in the result comment and hold the merge as well.
|
|
- An open writing-rule comment at the same line is reused instead of repeated;
|
|
the comments of the model's findings never reuse a writing-rule comment, and the other way round.
|
|
- If Gitea refuses the line comments, the violations stay in the result comment and hold the merge.
|
|
- werkrevisor 0.21.4.
|
|
|
|
## Prerequisite PRs
|
|
|
|
- PR#43: werkrevisor 0.21.3, merged.
|