# 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. # The PR never changes this file; Werkator passes its path in WERKREVISOR_CONFIG. [model] # The trial chose Sonnet: gemini-3.8-flash missed an obvious resource leak that Sonnet found. id = "openrouter/anthropic/claude-sonnet-5.5" # Operator-maintained prices in USD per 1M tokens. input_price_usd_per_mtok = 2.00 output_price_usd_per_mtok = 10.00 # Longer prompts degrade the review even within the context window of a frontier model. # The budget derives a lower input limit: 2 attempts × (input × 2.00 + 4000 × 10.00) / 1M ≤ 0.40 USD gives 80000 tokens. max_context_tokens = 150000 # Includes reasoning tokens. max_output_tokens = 4000 reasoning_effort = "low" timeout_seconds = 120 max_retries = 1 # Anthropic counts more tokens than o200k_base; calibrate with prompt_tokens / counted_raw_tokens of the usage records. # On werkrevisor PR#10 the factor 1.15 gave 49841 tokens, Anthropic reported 65792: 1.15 × 65792 / 49841 ≈ 1.52. token_count_factor = 1.55 [budget] max_usd_per_review = 0.40 min_key_remaining_usd = 0.50 [hard_orange] # .werkrevisor.toml adds the critical paths of werkrevisor. paths = [] [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" [engine] # "llm": the LLM review alone; "classifier": Jev alone, no LLM; "combined": Jev, then the LLM with Jev's hints. mode = "combined" [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