werkrevisor 0.19.3: a RED review no longer blocks later commits #30

Merged
ai-reviewer merged 2 commits from claude-code/no-stale-change-request into main 2026-10-06 14:10:56 +02:00
Collaborator
See [docs/prs/2026-10-06-PR#30-no-stale-change-request.md](docs/prs/2026-10-06-PR%2330-no-stale-change-request.md). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code added 1 commit 2026-10-06 14:08:47 +02:00
docs: PR#30 doc, a RED review no longer blocks later commits
werkator/server build succeeded after 00:31
werkator build succeeded after 01:19
bca1f3158a
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code marked the pull request as ready for review 2026-10-06 14:10:03 +02:00
mi added 1 commit 2026-10-06 14:10:04 +02:00
werkrevisor 0.19.3: a RED review no longer blocks later commits
ai-review/assessment AI review passed; approved by werkrevisor; merge scheduled for when the checks succeed
ai-review/gate build succeeded after 00:18
werkator/server build succeeded after 00:30
werkator build succeeded after 00:12
376f6f582e
RED gets a bot review COMMENT instead of REQUEST_CHANGES: the bot cannot dismiss a change request,
and the failed required status check already blocks a RED head.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator

🟢 werkrevisor: GREEN / PASS

Change kind: mixed.

Reasons

  • hint 1 build change(s) of low risk according to Jev: server/build.gradle.kts (weakens checks 0.02, risk 0.00)
  • hint 3 finding(s) of low severity or rated minor by Jev: werkrevisor/cli.py:430, tests/test_line_comments.py:72-73, werkrevisor/cli.py:399-405
  • hint model recommends merge with caution

Findings

  1. [medium] Stale docstring still says RED requests changes at werkrevisor/cli.py:430, hint, as a line comment

  2. [low] Duplicated assertion in new test at tests/test_line_comments.py:72-73, hint, as a line comment

  3. [low] Redundant branches in _review_event at werkrevisor/cli.py:399-405, hint, as a line comment

Classifier

5 of 5 units passed all questions (1 PR document(s)).
1 answer ignored because of a confidence below [classifier] min_confidence.

Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 39950, calls 1, tokens in 39823 / out 637 (reasoning included in out), duration 15.8 s, cost 0.0860 USD (reported), classifier `jev-1.13.0` calls 5, tokens in 3810, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1561, cost 0.0001 USD, build file judge `jev-1.13.0` calls 1, tokens in 560, cost 0.0000 USD, config: defaults + host + repository (.werkrevisor.toml at base 1924a35).
Reviewed head `376f6f582ef727175a516e9d37ea0ad2e613b084` against base `1924a3570032a58fa8623da3f28d34df48f2edca`, werkrevisor 0.19.2.
<!-- werkrevisor:376f6f582ef727175a516e9d37ea0ad2e613b084 --> <!-- werkrevisor-verdict:GREEN --> ## 🟢 werkrevisor: GREEN / PASS Change kind: `mixed`. ### Reasons - **hint** 1 build change(s) of low risk according to Jev: server/build.gradle.kts (weakens checks 0.02, risk 0.00) - **hint** 3 finding(s) of low severity or rated minor by Jev: werkrevisor/cli.py:430, tests/test_line_comments.py:72-73, werkrevisor/cli.py:399-405 - **hint** model recommends merge with caution ### Findings 1. **[medium] Stale docstring still says RED requests changes** at `werkrevisor/cli.py:430`, hint, as a line comment 2. **[low] Duplicated assertion in new test** at `tests/test_line_comments.py:72-73`, hint, as a line comment 3. **[low] Redundant branches in `_review_event`** at `werkrevisor/cli.py:399-405`, hint, as a line comment ### Classifier 5 of 5 units passed all questions (1 PR document(s)). 1 answer ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/anthropic/claude-sonnet-5.5`, LLM done, tokens counted before the call 39950, calls 1, tokens in 39823 / out 637 (reasoning included in out), duration 15.8 s, cost 0.0860 USD (reported), classifier `jev-1.13.0` calls 5, tokens in 3810, cost 0.0002 USD, finding judge `jev-1.13.0` calls 1, tokens in 1561, cost 0.0001 USD, build file judge `jev-1.13.0` calls 1, tokens in 560, cost 0.0000 USD, config: defaults + host + repository (.werkrevisor.toml at base 1924a35).<br> Reviewed head `376f6f582ef727175a516e9d37ea0ad2e613b084` against base `1924a3570032a58fa8623da3f28d34df48f2edca`, werkrevisor 0.19.2. </sub>
ai-reviewer left a comment
Collaborator

werkrevisor: GREEN / PASS for 376f6f582ef727175a516e9d37ea0ad2e613b084.
The result comment of werkrevisor holds the details.

werkrevisor: GREEN / PASS for `376f6f582ef727175a516e9d37ea0ad2e613b084`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:376f6f582ef727175a516e9d37ea0ad2e613b084 -->
@@ -65,0 +69,4 @@
gitea.files.append(gitea_file("doc/PR/1.md"))
outcome, gitea = finding_run([APP], gitea=gitea)
self.assertEqual((outcome.result.verdict, outcome.result.exit_code), (Verdict.RED, 20))
self.assertNotIn("REQUEST_CHANGES", [r[0] for r in gitea.created_reviews])
Collaborator

[low] Duplicated assertion in new test (werkrevisor)

hint

test_red_gives_a_comment_review_and_a_failed_gate asserts assertNotIn("REQUEST_CHANGES", ...) and then asserts the list equals ["COMMENT"]. The second assertion already implies the first. The same RED scenario is also repeated at the end of test_review_kind_follows_the_verdict, so the new test adds no new coverage there.

**[low] Duplicated assertion in new test** (werkrevisor) hint `test_red_gives_a_comment_review_and_a_failed_gate` asserts `assertNotIn("REQUEST_CHANGES", ...)` and then asserts the list equals `["COMMENT"]`. The second assertion already implies the first. The same RED scenario is also repeated at the end of `test_review_kind_follows_the_verdict`, so the new test adds no new coverage there.
@@ -400,3 +399,1 @@
event = {Verdict.GREEN: "APPROVED", Verdict.RED: "REQUEST_CHANGES"}.get(result.verdict)
if event:
return event
if config.gate.yellow_gate == "approval" and result.verdict is Verdict.GREEN:
Collaborator

[low] Redundant branches in _review_event (werkrevisor)

hint

The RED branch returns "COMMENT" under approval, but the fallthrough already returns "COMMENT" when line comments exist. The RED branch is only needed for the case without line comments, so it is not clear from the code why the two cases are separate. The comment explains the reason, which is fine, but the structure could be simpler.

**[low] Redundant branches in `_review_event`** (werkrevisor) hint The RED branch returns "COMMENT" under `approval`, but the fallthrough already returns "COMMENT" when line comments exist. The RED branch is only needed for the case without line comments, so it is not clear from the code why the two cases are separate. The comment explains the reason, which is fine, but the structure could be simpler.
@@ -426,5 +426,5 @@
raise ConfigError("OPENROUTER_API_KEY is not set")
if not args.no_llm and config.engine.mode != "llm" and not typesafe_key:
raise ConfigError("TYPESAFE_API_KEY is not set")
except ConfigError as e:
print(f"werkrevisor: configuration error: {redactor(str(e))}", file=sys.stderr)
Collaborator

[medium] Stale docstring still says RED requests changes (werkrevisor)

hint; Jev: real 0.83, severity 1.1 of 3

The docstring of _approval_gate still says "RED requests changes". After this PR RED submits a COMMENT review, so the docstring contradicts the code. The _publish comment "still submits a missing approval or change request" is stale for the same reason.

**[medium] Stale docstring still says RED requests changes** (werkrevisor) hint; Jev: real 0.83, severity 1.1 of 3 The docstring of `_approval_gate` still says "RED requests changes". After this PR RED submits a `COMMENT` review, so the docstring contradicts the code. The `_publish` comment "still submits a missing approval or change request" is stale for the same reason.
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-06 14:10:21 +02:00
ai-reviewer merged commit 70cfca60b4 into main 2026-10-06 14:10:56 +02:00
ai-reviewer deleted branch claude-code/no-stale-change-request 2026-10-06 14:10:57 +02:00
Sign in to join this conversation.
No Reviewers
No labels
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mi/werkrevisor#30