Files
werkrevisor/docs/prs/2026-10-08-PR#56-provider-order.md
claude-code 6410fa5f18
werkator build succeeded after 00:08
werkator/werkrevisor-statistics build succeeded after 00:26
werkrevisor 0.27.0: the operator chooses the OpenRouter providers of the model (#56)
Co-authored-by: claude-code <claude-code@javagil.de>
2026-10-08 18:41:48 +02:00

76 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PR#56: the operator chooses the OpenRouter providers of the model
> **WARNING:** This document describes only the change applied in this PR.
> It may already be outdated once the next PR is merged.
> Historic PR documentation is not maintained along with new PRs; treat it as a snapshot.
## The Problem
OpenRouter routes MiniMax M3 to one of 13 providers, among them two with 4-bit weights
and some with an uptime of 93 to 97 % on 2026-10-08.
Some calls hang: on 2026-10-08, two of twelve measured reviews waited more than 700 s for about 1100 output tokens,
while the others took 75 to 241 s.
A call that hangs uses up its timeout of 300 s; only the retry delivers, and without a retry the review fails.
werkrevisor cannot choose the providers, and it does not record which provider answered.
## Non-Goals
- No `provider_order` for the excerpt selection: it uses GPT-6 Luna, whose calls did not hang in the measurement.
- No provider in the usage record for the model review: PR-Agent 0.47.0 does not report it.
## The Scenarios
### Feature: the operator chooses the OpenRouter providers of the model
#### Scenario#56.01: the model review asks the providers in the configured order
So that the review avoids providers that hang, but still answers when the first one fails.
- **Given** `[model] provider_order` names providers
- **When** werkrevisor configures PR-Agent
- **Then** PR-Agent asks OpenRouter for these providers in this order, with fallbacks to others
##### Verified by
- [test_provider_order: test_the_model_review_asks_the_providers_in_the_configured_order](../../tests/test_provider_order.py)
#### Scenario#56.02: the change summary asks the same providers and records which one answered
So that a slow summary shows its provider in the usage record.
- **Given** `[doc_check] provider_order` names providers
- **When** werkrevisor asks the economy model for the change summary
- **Then** the request asks OpenRouter for these providers in this order
- **and** the usage record holds the provider that answered
##### Verified by
- [test_provider_order: test_the_change_summary_asks_the_same_providers_and_records_which_one_answered](../../tests/test_provider_order.py)
## The Solution
- `[model] provider_order` and `[doc_check] provider_order`: lists of OpenRouter provider slugs, empty by default;
`allow_fallbacks` stays on, so that another provider answers when the first ones fail.
- config/werkrevisor.toml, config/werkator.toml and config/werkcrappit.toml name `minimax`, the maker of the model:
8-bit weights and 99.86 % uptime on 2026-10-08.
- The README names both keys; docs/werkrevisor.werkbaum records the measurement of 2026-10-08.
- werkrevisor 0.27.0.
## Measurement
On 2026-10-08 werkrevisor reviewed 4 merged PRs (#47, #50, #51, #53) with three settings of MiniMax M3, for about 0.25 USD:
| setting | reviews done | model review |
|---|---|---|
| `medium`, timeout 300 s, 1 retry | 3 of 4 | 75–118 s; #51 timed out after 735 s |
| `low`, timeout 300 s, 1 retry | 4 of 4 | 75–171 s; #51 took 540 s with the retry |
| `medium`, timeout 600 s, no retry | 3 of 4 | 105–241 s; #47 timed out after 728 s |
The calls that failed had produced about 1100 output tokens after more than 700 s, so a provider hung.
In the model comparison of 2026-10-07, `low` failed on 1 of 4 heads too, so neither setting is better:
both failed on 1 of 8 heads, and the configs keep `medium`.
## Prerequisite PRs
- PR#55: the diagrams show how a review runs today, merged.