Answer where asked, wait on a merge, and let the driver title PRs #100

Merged
dongar merged 2 commits from loop-review-replies into main 2026-10-03 18:00:01 +00:00
Collaborator

Follow-ups from the new loop's first live run (sandbox issue #255 → PR #256, merged, item closed).

Changes

  1. Answer where asked (D5). An item remembers where the operator last spoke.
    • A question asked on the PR is answered on the PR.
      • An inline comment's answer quotes its file and line (> on \text.py:9`:`), since Gitea's API can't reply inside an inline thread.
      • The item's Matrix thread gets a one-line pointer: "I answered your comment on PR #N: ".
    • Once the operator speaks in Matrix, answers go back there.
    • Live, the agent's (good) answer to an inline question jumped to Matrix, which was confusing.
  2. wait_for_review(note): a waiting tool, offered only while a PR is open. When a review needs no change, or only the operator's merge is left, the item waits on the merge, not on an answer. Live, it used ask_human to say "please merge", which left status saying "waiting for an answer".
  3. finish_milestone(summary, title): the driver titles its PR. Live, the title was the issue's title plus "(milestone 1)", which reads oddly for "Please add…".

Also: the e2e test's merge waits out Gitea's brief 405 "Please try again later". Gitea returns that while it's still checking a just-pushed PR can merge.

Tests

  • New in test_loop_milestones.py:
    • a PR question answered on the PR, quoted, with the Matrix pointer;
    • questions go back to Matrix after a Matrix reply;
    • wait_for_review → waiting on the merge → the merge closes the item;
    • the driver's PR title.
  • The property walk's model now also calls wait_for_review.
  • 628 unit tests pass. Both e2e tests pass on the build VM.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE

Follow-ups from **the new loop's first live run** (sandbox issue #255 → PR #256, merged, item closed). ## Changes 1. **Answer where asked** (D5). An item remembers where the operator last spoke. - **A question asked on the PR is answered on the PR.** - An inline comment's answer quotes its file and line (`> on \`text.py:9\`:`), since Gitea's API can't reply inside an inline thread. - The item's Matrix thread gets a one-line pointer: "I answered your comment on PR #N: <link>". - **Once the operator speaks in Matrix, answers go back there.** - Live, the agent's (good) answer to an inline question jumped to Matrix, which was confusing. 2. **`wait_for_review(note)`:** a waiting tool, offered only while a PR is open. When a review needs no change, or only the operator's merge is left, the item waits on the **merge**, not on an answer. Live, it used `ask_human` to say "please merge", which left `status` saying "waiting for an answer". 3. **`finish_milestone(summary, title)`:** the driver titles its PR. Live, the title was the issue's title plus "(milestone 1)", which reads oddly for "Please add…". **Also:** the e2e test's merge waits out Gitea's brief **405 "Please try again later"**. Gitea returns that while it's still checking a just-pushed PR can merge. ## Tests - **New in `test_loop_milestones.py`:** - a PR question answered on the PR, quoted, with the Matrix pointer; - questions go back to Matrix after a Matrix reply; - `wait_for_review` → waiting on the merge → the merge closes the item; - the driver's PR title. - **The property walk's model** now also calls `wait_for_review`. - 628 unit tests pass. Both e2e tests pass on the build VM. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE
dev-agent added 1 commit 2026-10-03 17:29:29 +00:00
Answer where asked, wait on a merge, and let the driver title PRs
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 2m17s
651551aab4
From the new loop's first live run (sandbox #255, PR #256):
- A question asked on the PR is answered on the PR (an inline one quoted
  with its file and line, since the API can't reply in its thread), with
  a pointer in the item's Matrix thread; one asked in Matrix stays there.
- wait_for_review: when a review needs no change, or only the operator's
  merge is left, the item waits on the merge instead of on an answer.
- finish_milestone takes the PR's title from the driver.
The e2e test's merge waits out Gitea's brief 'try again later' after a
push.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE
dev-agent added 1 commit 2026-10-03 17:29:36 +00:00
Mark M2.1 done in the Development Plan
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 2m22s
f0fdd75626
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE
dongar approved these changes 2026-10-03 17:59:58 +00:00
dongar merged commit d504588a57 into main 2026-10-03 18:00:01 +00:00
dongar deleted branch loop-review-replies 2026-10-03 18:00:01 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dev/nisse#100