Files
nisse/nisse-review
dongarandClaude Opus 5.5 080205db7e
CI / checks (push) Skipped
CI / checks (pull_request) Failing after 1m15s
CI / e2e (pull_request) Skipped
nisse-review: a stop ends a review in progress; quieter repo failures
SIGTERM used to stop only new rounds: a review in progress ran on until
systemd killed it 90s later. Now the scheduler's stop sets the driver's
cancel flag, so the run ends at its next turn, and a model call in flight
is broken off (Interruptible, raising Stopped from the signal handler, only
ever inside a model call). The item goes back to ready, with nothing
drafted posted and no failure counted; replies already posted carry their
markers and are not repeated.

intake.repo_failed is logged when a repository starts failing or the reason
changes, and intake.repo_ok when it lists again, not every round.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
2026-10-17 15:41:55 +00:00
..
2026-10-13 22:34:02 +00:00

nisse-review

The Review Agent (Part R of the architecture): it reviews every pull request that is ready, in the repositories its Gitea account can read, and posts its review on the PR as a COMMENT review. It reads and comments; it never changes code, approves, or requests changes.

A thin application over nisse-core, with its own small scheduler:

  • config: its YAML configuration (nisse-review.example.yaml).
  • state: its state store, and a review item (one per PR).
  • scheduler: the duty (ready PRs), one review at a time, recovery after a crash.
  • reader: the repository at the PR's head and base, read-only, from Gitea's archives: the run's executor.
  • review: one review run, and posting it.
  • build, main: putting it together, and the access check at startup.

Bring-up on the development VM: scripts/review-bringup.sh.