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
39 lines
1.4 KiB
YAML
39 lines
1.4 KiB
YAML
# 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}
|