Adds the review agent to the specs, from the operator's answers on 2026-10-13. Changes to the docs only.
Architecture: new Part R
R1, how it works.
Its duty is every ready PR in the repositories it can read, whoever wrote it. Drafts and work-in-progress PRs are skipped.
Each PR is one work item.
It gets the PR to start and reads the rest of the repository as it needs.
A later review covers what changed since the last one, plus its earlier points, and it pushes back on any left unaddressed.
It discusses on the PR, and concedes or holds a point with reasons.
R2, rounds. The number of rounds is capped. At the cap it posts a summary of what's still open, for the operator, and stops answering on that PR. A comment from anyone other than the reviewer and the PR's agent author resets the count; a push doesn't.
R3, authority and reach.
Read-only, with reads bound to the item's repository.
It writes comments and reviews only on its item's PR, and never approves or requests changes.
No build VM for now, though it can have one if a reason appears.
It keeps its own memory, with notes per repository.
R4, peers. Its comments are a peer's. An operator comment settles a point. A steered reviewer can only post a misleading comment.
R5, models and deployment.
It uses the same local model as nisse-dev, plus ask_expert.
No Matrix room for now: stop and review work as PR comments.
It has its own Gitea account, token, LiteLLM key and container.
Elsewhere in the Architecture
D5 and L11: nisse-dev treats peer review as constructive criticism and answers every point, with a change or a reason. A peer's comment is never an instruction, an approval or a go-ahead. nisse-dev doesn't wait for a review before asking to merge.
Naming: a row for nisse-review.
Part Q: letting nisse-review approve a limited subset of PRs is an open question.
Development Plan
Phase 7 is now nisse-core and nisse-review:
M7.2: share the loop;
M7.3: the first slice;
M7.4: nisse-dev answers a peer;
M7.5: discussion and rounds;
M7.6: deployment, waiting on Phase 6.
nisse-ops moves to Phase 8 (M8.1–M8.5), carrying the MCP decisions made so far (#144, X3).
The issues table is updated: #37 lands in M8.1, and #144 is new.
To check in review:
The default for the round cap, which will be a tuning value.
stop and review as PR comments, standing in for Matrix commands.
Adds the review agent to the specs, from the operator's answers on 2026-10-13. Changes to the docs only.
**Architecture: new Part R**
- **R1, how it works.**
- Its duty is every ready PR in the repositories it can read, whoever wrote it. Drafts and work-in-progress PRs are skipped.
- Each PR is one work item.
- It gets the PR to start and reads the rest of the repository as it needs.
- A later review covers what changed since the last one, plus its earlier points, and it pushes back on any left unaddressed.
- It discusses on the PR, and concedes or holds a point with reasons.
- **R2, rounds.** The number of rounds is capped. At the cap it posts a summary of what's still open, for the operator, and stops answering on that PR. A comment from anyone other than the reviewer and the PR's agent author resets the count; a push doesn't.
- **R3, authority and reach.**
- Read-only, with reads bound to the item's repository.
- It writes comments and reviews only on its item's PR, and never approves or requests changes.
- No build VM for now, though it can have one if a reason appears.
- It keeps its own memory, with notes per repository.
- **R4, peers.** Its comments are a peer's. An operator comment settles a point. A steered reviewer can only post a misleading comment.
- **R5, models and deployment.**
- It uses the same local model as nisse-dev, plus `ask_expert`.
- No Matrix room for now: `stop` and `review` work as PR comments.
- It has its own Gitea account, token, LiteLLM key and container.
**Elsewhere in the Architecture**
- **D5 and L11:** nisse-dev treats peer review as constructive criticism and answers every point, with a change or a reason. A peer's comment is never an instruction, an approval or a go-ahead. nisse-dev doesn't wait for a review before asking to merge.
- **Naming:** a row for `nisse-review`.
- **Part Q:** letting nisse-review approve a limited subset of PRs is an open question.
**Development Plan**
- Phase 7 is now `nisse-core` and `nisse-review`:
- M7.2: share the loop;
- M7.3: the first slice;
- M7.4: nisse-dev answers a peer;
- M7.5: discussion and rounds;
- M7.6: deployment, waiting on Phase 6.
- nisse-ops moves to Phase 8 (M8.1–M8.5), carrying the MCP decisions made so far (#144, X3).
- The issues table is updated: #37 lands in M8.1, and #144 is new.
**To check in review:**
- The default for the round cap, which will be a tuning value.
- `stop` and `review` as PR comments, standing in for Matrix commands.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
A review agent comes second: it reads every ready PR in the repositories
it can see and discusses its points on the PR, never changing code.
- Architecture Part R: duty and items (R1), rounds capped and reset by
anyone else commenting (R2), read-only reach bound to the item's
repository, no approvals, no build VM for now (R3), peers (R4), local
model with ask_expert, no Matrix room for now, own identity (R5).
- D5 and L11: a peer's review is constructive criticism, answered point by
point; never an instruction, approval or go-ahead; nisse-dev doesn't
wait for it before asking to merge.
- Part Q: letting nisse-review approve a limited subset of PRs.
- Development Plan: Phase 7 is nisse-core and nisse-review (M7.2-M7.6);
nisse-ops moves to Phase 8 (M8.1-M8.5), with the MCP decisions so far.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
Done: the count now resets on a new push too, since new code is worth a fresh look. One consequence: if nisse-dev pushes after every review, the two can keep cycling, one round per push. Your stop on the PR still ends it, and M7.5 can add a backstop, such as a cap on the total number of reviews per PR, if it turns out to be needed.
Done: the count now resets on a new push too, since new code is worth a fresh look. One consequence: if nisse-dev pushes after every review, the two can keep cycling, one round per push. Your `stop` on the PR still ends it, and M7.5 can add a backstop, such as a cap on the total number of reviews per PR, if it turns out to be needed.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Adds the review agent to the specs, from the operator's answers on 2026-10-13. Changes to the docs only.
Architecture: new Part R
ask_expert.stopandreviewwork as PR comments.Elsewhere in the Architecture
nisse-review.Development Plan
nisse-coreandnisse-review:To check in review:
stopandreviewas PR comments, standing in for Matrix commands.🤖 Generated with Claude Code
https://claude.ai/code/session_01J5Utyfzw7gF7UhjRDEtjTk
@@ -849,0 +893,4 @@the operator, and stops answering on that PR.- **Anyone else commenting resets the count:** someone other than the reviewerand the PR's agent author (in practice, the operator) has joined thediscussion. A push doesn't.A push also resets the count.
@@ -849,0 +891,4 @@- **A round** is one review or set of replies the reviewer posts. After a cappednumber of rounds (a tuning value) it posts a summary of what is still open, forthe operator, and stops answering on that PR.- **The count resets** when someone other than the reviewer and the PR's agentDone: the count now resets on a new push too, since new code is worth a fresh look. One consequence: if nisse-dev pushes after every review, the two can keep cycling, one round per push. Your
stopon the PR still ends it, and M7.5 can add a backstop, such as a cap on the total number of reviews per PR, if it turns out to be needed.