Files
claude-code 02c5cad014
werkator build succeeded after 00:10
werkator/werkrevisor-statistics build succeeded after 00:29
werkator/release build succeeded after 00:14
werkrevisor 0.55.0: the release brings the host configs in line (#124)
Co-authored-by: claude-code <claude-code@javagil.de>
2026-10-20 18:47:44 +02:00

65 lines
2.7 KiB
TOML

# werkrevisor host config for reviewing werkdock (mi/werkdock) on git.javagil.de.
# It holds only what the host decides; the review rules are in the .werkrevisor.toml of werkdock.
# The release build of werkrevisor installs it on the host with each version (PR#124).
[model]
# An economy model suffices, since Jev decides and the model only advises (PR#40):
# on 4 heads with 10 known findings, MiniMax M3 found as many as Sonnet 5.5 for a tenth of the cost, but needs minutes.
id = "openrouter/minimax/minimax-m3"
# Operator-maintained prices in USD per 1M tokens.
input_price_usd_per_mtok = 0.30
output_price_usd_per_mtok = 1.20
# Longer prompts degrade the review even within the context window.
max_context_tokens = 150000
# Includes reasoning tokens: MiniMax M3 wrote up to 47050 in 211 reviews, and with 32000 it once answered nothing (PR#84).
max_output_tokens = 64000
# "low" and "none" missed a review on 1 of 4 heads each.
reasoning_effort = "medium"
# On 2026-10-08 some calls hung for over 700 s; the maker of the model first, others when it fails.
provider_order = ["minimax"]
# A call took up to 242 s; Werkator's ai-review build allows 15 minutes for 2 calls.
timeout_seconds = 300
max_retries = 1
# MiniMax reported at most 2 % more prompt tokens than o200k_base counted.
token_count_factor = 1.05
[budget]
# A review with 2 calls of 150000 input and 64000 output tokens costs at most about 0.24 USD.
max_usd_per_review = 0.25
min_key_remaining_usd = 0.50
[gate]
# Branch protection requires one approval from {bot, human_reviewers}; see the README.
yellow_gate = "approval"
human_reviewers = ["mi"]
assessment_context = "ai-review/assessment"
# Only a PR whose title changed from "WIP: " to one without gets a review; the bot then schedules the merge,
# so a GREEN PR merges at once and a YELLOW or ORANGE one with the human approval.
require_wip_transition = true
automerge = true
[engine]
# "llm": the LLM review alone; "classifier": Jev alone, no LLM; "combined": Jev, then the LLM with Jev's hints.
mode = "combined"
# Jev decides with [path_judge] scope = "all"; the model only advises, so an economy model suffices.
model_role = "advises"
[classifier]
endpoint = "https://api.typesafe.ai/v1/systemone"
model = "jev-latest"
# Operator-maintained price in USD per 1M input tokens; Jev's output is free.
input_price_usd_per_mtok = 0.042
# Jev reads about 32000 tokens of state; a larger unit is not sent and makes the review YELLOW.
max_state_chars = 60000
max_units = 80
timeout_seconds = 20
[path_judge]
# Jev judges every changed file: only a change that touches security or weakens the checks waits for a human.
judge = "jev"
scope = "all"
[excerpt]
# An economy model selects the lines of an excerpt; on 4 measured heads it never found less than the fixed window.
select = "model"