M7.3: nisse-review's first slice
A new package over nisse-core: it reviews every ready PR in the repositories its account can read, and posts one COMMENT review. - scheduler: each round, open PRs per readable repository (or the configured repositories); an item per PR, ready unless draft or WIP; closed with the PR. One review at a time, oldest first. - reader: the repository at head and base from Gitea archives, unpacked and read in Python (read_file, list_files, search_code), and its issues; bound to the item's repository; no git, no shell. - review: starts from the PR, commits, diff, comments, closed issues, CI; comment drafts a point on any existing line; post_review posts one COMMENT review at the head, inline where Gitea takes it, else as links in the summary. ask_expert; vault and memory (memory/nisse-review). - L8: posting is an intent; recovery asks Gitea for the marked review and never posts twice; with Gitea down, the item waits. - Failures retried, then said on the PR until the next push. - Startup refuses an account that can push to or administer any repo. - nisse-core gitea: readable_repositories, open_pull_requests, diff, commits, archive, issue, search_issues, reviews, post_review; PR fields. - Bring-up: scripts/review-bringup.sh; nisse-review.example.yaml. - Tests: unit over a fake Gitea and scripted model; a live test (NISSE_REVIEW_GITEA_TOKEN) reviews a PR in a fresh test repository. - Docs: Development Plan M7.3, Tuning Guide (tuning.review.*). 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:
1 parent
fc71d3da75
commit
f59d974a95
24 files changed
+2330
-7
No files matched your search
@@ -0,0 +1,38 @@
|
||||
# Example configuration for nisse-review (Part R). Copy to nisse-review.yaml
|
||||
# (or point NISSE_CONFIG at your copy) and edit.
|
||||
#
|
||||
# - Secrets are ${VARIABLE} references, resolved from the environment (or the
|
||||
# .env file NISSE_ENV names) at startup. Nothing else goes there.
|
||||
# - Unknown keys are errors.
|
||||
# - Its Gitea account must have read access only, to every repository it can
|
||||
# see: startup refuses an account that can push to one (R3).
|
||||
|
||||
state_db: ~/nisse-review/state.db
|
||||
|
||||
llm: # L9: LiteLLM is the only LLM destination
|
||||
base_url: http://litellm.example:4000
|
||||
token: ${NISSE_LLM_TOKEN}
|
||||
# max_output_tokens: 8192
|
||||
# request_timeout_s: 600
|
||||
|
||||
roles:
|
||||
reviewer: qwen3.8-27b # drives the review: the local model (R5)
|
||||
expert: claude-opus-5-5 # ask_expert's
|
||||
|
||||
gitea:
|
||||
url: https://gitea.example
|
||||
token: ${NISSE_GITEA_TOKEN} # the nisse-review account's
|
||||
operators: [operator] # whose comments are the operator's (R4)
|
||||
|
||||
# repositories: [owner/repo] # only these; unset, every one it can read
|
||||
|
||||
# vault: # L10; memory/nisse-review rw for its memory
|
||||
# root: ~/vault
|
||||
# folders:
|
||||
# memory/nisse-review: rw
|
||||
# notes: ro
|
||||
|
||||
# tuning: # docs/Tuning-Guide.md
|
||||
# review: {poll_s: 60, max_turns: 40, diff_chars: 60000, attempts: 2}
|
||||
# expert: {consult_budget: 3}
|
||||
# context: {keep_recent_turns: 6, safety_margin: 0.1}
|
||||
Reference in new issue
Block a user