Repository navigation
v0.3.2: model refresh, runner isolation and run outcome metrics - #21
Merged
Merged
Conversation
- Add Opus 5.5, Fable 5.1, GPT-6 and deepseek-flash to price tables and model lists; patch retired model ids in runner profiles - Add an OpenAI Responses API provider for GPT-6 in the direct runner; custom base URLs (Azure, LiteLLM) keep chat completions - Pass reasoning effort to DeepSeek and raise its output cap to 128K - Update the codex runner: effort, per-call usage on resume, and a --codex-sandbox flag for containers where bubblewrap can't start - Isolate CLI runners from the reviewed checkout: claude loads user settings only and no MCP servers; opencode runs without project config, formatters and LSP, and refuses a checkout that ships .opencode/ or opencode.json(c), whose plugins it would execute - Switch opencode to --auto - Classify run outcomes (status + reason) for all runners, report them with cost in debug bundles, and export reviewer_runs_total and reviewer_run_cost_usd_total - Retry transient provider errors with one shared policy; turn off the Anthropic SDK's own retries so attempts don't stack - Warn the direct runner before its round limit, add grace rounds and a maxRounds runner-profile param (--max-rounds) - Fix direct runner diff refs in GitLab CI (bare branch names) - Fix cost reporting to include failed runs, the Step 2 retry and failed judge attempts - Fix debug bundle uploads capped at 2MB by the global body limit - Keep debug artifacts gzip-compressed in memory; clip bundle metadata - Handle SIGTERM in reviewctl: a cancelled job is not a failure - Update go-openai to v1.42.1
- Update vite 6.4 -> 8.3 and @vitejs/plugin-vue 5 -> 6; switch the vt build config to rolldownOptions - Update vue-router 4 -> 5, vue-tsc 2 -> 3 and typescript 5.7 -> 6.0; pin typescript with ~ since TS 7 breaks vue-tsc (./lib/tsc is gone) - Update markdown-it 14 -> 15 and drop @types/markdown-it: import StateCore/Token from the package root, deep lib/* imports are removed - markdown-it 15 stops fuzzy-linking bare names, so README.md or setup.py in review text no longer become bogus http:// links - Load highlight.js/lib/common instead of every language: main chunk drops 1.21 MB -> 447 KB; alias postgresql fences to sql - Drop the unused selectEl ref in FillExampleSelect found by vue-tsc 3 - Bump vue, tailwindcss, mermaid 11.17, highlight.js and ufo minors, clearing all 12 npm audit advisories - Keep mermaid on 11.x: 12.0 adds 2 MB to the embedded bundle and a lodash-es advisory via chevrotain - Move to Node 24 (.nvmrc, Docker) and declare engines node >=22.12 - Add a Frontend workflow: npm ci, build:all, audit of runtime deps
- pkg/reviewer/run_metrics_test.go imports client_model directly, so go mod tidy moves it out of the indirect block - go.sum and vendor are unchanged
- Ship a debug bundle when the judge fails; tag empty member and judge reviews as not_submitted - Fail a single review whose review.json stays unfilled after the Step 2 retry instead of uploading the skeleton - Retry and classify Responses API replies with status failed - Report provider retries as they happen (Request.OnRetry) and log them - Record every run of a runner for review cost, usage and duration, failed attempts and the Step 2 retry included; ship debug bundles from one place, honoring --debug-upload for panel members and judge - Reject debug uploads for unknown projects before reading the body, clip metadata fields, and keep implausible costs out of the metrics - End grace rounds after two rounds of refused tool calls - Validate --max-rounds against the runner-profile bounds - Turn off Claude Code auto-memory in review runs; force formatter and LSP off inside an operator's OPENCODE_CONFIG_CONTENT - Record the codex run duration; time CLI subprocesses in runExec - Log panel members, member labels, direct rounds, notices, resolved model ids and run cost - Clip strings on rune boundaries with one shared helper - Apply go fix (any, strings.SplitSeq, wg.Go, new(v))
- Strip reviewctl and GitLab CI secrets from the env of runner CLIs and git, and run git on the checkout without hooks or fsmonitor - Classify codex/opencode failures from their error text (billing, auth, rate limit); billing wording now wins over the HTTP status - Retry OpenAI transport errors, classify undecodable error bodies by HTTP status - Fix double-counted run metrics when the review was created before an md upload failed: the debug bundle now carries the review id - Ship a debug bundle for a panel's own failure under the "panel" runner label - Apply the profile's maxRounds unless --max-rounds or REVIEW_MAX_ROUNDS is set; let a second signal end reviewctl - Serve debug artifacts only as JSON or sandboxed plain text, mask the project key in logs and errors, 503 on a failed project lookup - Warn when OPENCODE_CONFIG_CONTENT can't be merged - Skip gateway profiles (own apiBaseURL) in the retired-models patch - Update reviewctl docs for stream-json and the RPC config flow
- Pin v2.13.2 in the lint workflow and Makefile: CI's v2.12.2 flagged goconst repeats and the //go:fix directive that the local v2.13.2 passes cleanly
- Upload every member when the judge fails or can't start, so each completed run is counted; report a judge that never started - Keep --max-rounds / REVIEW_MAX_ROUNDS over panel member and judge profiles - Mask the project key in the access log, RPC param logs, Sentry events, reviewctl logs and upload transport errors - Keep a failed Step 2 retry's own reason (cancelled, timeout, billing) instead of reporting not_submitted - Run runner CLIs in their own process group: SIGTERM it on cancel, kill leftovers after exit, bound pipe waits with WaitDelay; handle SIGHUP in reviewctl - Skip Slack notifications for member reviews - Test the decompressed artifact size limit at its boundary
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
docs/patches/2026-09-23-retired-models.sql, data-only; profiles with their ownapiBaseURLare left alone).provider: openai); custom base URLs (Azure, LiteLLM) keep chat completions. DeepSeek gets reasoning effort and a 128K output cap.--codex-sandbox/REVIEW_CODEX_SANDBOXfor containers where bubblewrap can't start..opencode/oropencode.json(c), and switches to--auto(opencode ≥ 1.17.12). reviewctl and GitLab CI secrets are stripped from the env of runner CLIs and git (pkg/reviewer/subprocess.go); git runs without hooks or fsmonitor.reviewer_runs_total/reviewer_run_cost_usd_total. One shared retry policy for transient provider errors (SDK retries off), incl. failed Responses replies.maxRoundsprofile param overridden by--max-rounds/REVIEW_MAX_ROUNDS; provider retries logged as they happen.not_submitted.go fix, reviewctl docs updated for stream-json and the RPC config flow.Test plan
make fmt lint test— greenreviewctl review --runner direct --api-provider openai --model gpt-6-sol— Responses API with tool usereviewctl review --runner direct --api-provider deepseek— effort passed, cost recordedcancelledREVIEW_CODEX_SANDBOX=danger-full-access)/v1/debug/storage/shows reasonbilling,reviewer_runs_totalincrements once