nisse-review marks a reply that settles its thread; the PR's author resolves it
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 1m58s
CI / e2e (pull_request) Successful in 7m41s

The reviewer is read-only (R3), so Gitea refuses it resolving a thread.
Now each reply says whether it settles its thread, and a settled reply
carries <!-- nisse-review: settled -->. nisse-dev, as the author, resolves
every comment on that thread's line when it watches the PR, and doesn't
take the settled reply as a point to answer. scripts/resolve_settled.py
does the same for PRs made by hand.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
This commit is contained in:
dongarandClaude Opus 5.5 committed 2026-10-19 22:06:56 +00:00
1 parent 6b85e5a039
commit 33d030590d
11 files changed
+384 -12

No files matched your search

+7
View File
@@ -78,6 +78,8 @@ class Forge:
self.approved: dict[int, list[Approval]] = {}
self.status: dict[str, str] = {} # commit -> combined check state
self.agent_merged: list[int] = []
self.resolved: list[int] = [] # line comments the agent resolved
self.refuse_resolve = False
# intake
def assigned_issues(self, repo: str, assignee: str) -> list[Issue]:
@@ -171,6 +173,11 @@ class Forge:
def post_comment(self, repo: str, index: int, body: str) -> None:
self.posted.append((index, body))
def resolve_comment(self, repo: str, comment_id: int) -> None:
if self.refuse_resolve:
raise GiteaError("gitea POST resolve returned 403")
self.resolved.append(comment_id)
def post_review(self, repo: str, index: int, *, body, commit, comments=()) -> int:
if self.refuse_inline:
raise GiteaError("gitea POST reviews returned 422: line not in diff")