v2.18.1
Added
cost-ceiling-unpriced(AI_COST_CEILING_UNPRICED) sets what happens when the cost ceiling cannot bound a model. A model with no pricing row used to be estimated at $0, somax-cost-usdcould not stop it and the only signal was a line in the job log (#977). With the default,warn, the review runs and a “Cost ceiling not enforced” notice naming the model(s) goes in the review comment and the job summary. Withblock, the review is skipped before any LLM call, with a skip comment that names the model(s). An invalid value is an error even whenmax-cost-usdis unset. Otherwise it only matters whenmax-cost-usdis above 0, but a setup that has a ceiling and a model with no pricing row (everyopenai-compatiblemodel, for example) will now see the notice on every review. Images older than 2.18.1 ignore the setting, and a caller that passescost-ceiling-unpricedto theslash-commands.ymlreusable workflow needs a ref that includes the input. If the pricing file cannot be loaded, or the pre-flight cost check itself fails, the review still runs and the notice says so, because blocking there would skip every ceiling-enabled review.
Fixed
- The
ai-pr-review/policy-gatecheck no longer goes back toaction_requiredafter/ai-pr-review review-fullsatisfied it (#979). A slower automatic quick review on the same commit could finish last and replace thesuccesswith its ownaction_required. It now looks for an existingsuccesson that commit first and keeps the gate satisfied. A new push is a new commit and still starts ataction_required. This had to be fixed before the gate can safely be a required check. - A request that still fails with HTTP 429 or a 5xx after all retries now keeps the provider’s error body in its error message. It used to read only
OpenAI returned HTTP 429 after 3 retries. An exhausted OpenAI or Gemini key is a 429 and only the body says it is a quota problem, so the live model canary could not tell a billing block from a model regression. The body is cut at 500 characters.
Changed
- The scheduled live model canary is now set up to test the OpenAI and Google defaults as well as Anthropic. Its first run with the new keys is scheduled for 2026-10-05. It adds 8 billed calls per weekly run, its job timeout goes from 20 to 45 minutes, a run cancelled at the timeout now files an issue too, and OpenAI and Gemini quota errors are recognized as quota blocks rather than reported as model regressions.
See CHANGELOG.md for full technical detail.