Files
claude-code 89110d6007
werkator build succeeded after 00:11
werkator/werkrevisor-statistics build succeeded after 00:31
werkator/release build succeeded after 00:28
werkrevisor 0.54.0: diagrams for werkrevisor, drawn by Sonnet for PRs that a human reviews (#125)
Co-authored-by: claude-code <claude-code@javagil.de>
2026-10-20 12:40:08 +02:00

83 lines
3.6 KiB
TOML

# werkrevisor host config for reviewing werkrevisor itself on git.javagil.de.
# It holds only what the host decides: model, prices, budget, gate, engine and the classifier endpoint.
# The review rules of the repository are in .werkrevisor.toml at the repository root.
# A PR that changes this file is still reviewed with the deployed copy; Werkator passes it in WERKREVISOR_CONFIG_TOML.
[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
[mechanical]
# A changed file whose every changed line is an import, a whitespace change or a rename does not go to the model.
# The built-in rules apply; .werkrevisor.toml may adjust them.
enabled = true
[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"
[doc_check]
# Jev compares the diff of each changed file with the PR document; no economy model, the defaults suffice.
[excerpt]
# An economy model selects the lines of an excerpt; on 4 measured heads it never found less than the fixed window.
select = "model"
[diagrams]
# Measured on PR#117, PR#118, PR#122 and PR#123: Sonnet names the changed functions, GPT-6 Luna only rough boxes,
# and the graph documents of MiniMax M3 do not validate.
# Only PRs that a human reviews get them (skip_green), at about 0.10 to 0.20 USD per head.
enabled = true
model = "anthropic/claude-sonnet-5.5"
# Sonnet needed 18 to 43 s; 2 review calls of 300 s and 120 s here stay within the 15 minutes of the build.
timeout_seconds = 120