Skip to content

feat(config): add model field to ReviewConfig and DebateConfig#386

Merged
RyderFreeman4Logos merged 1 commit intomainfrom
feat/review-debate-model-field
Mar 9, 2026
Merged

feat(config): add model field to ReviewConfig and DebateConfig#386
RyderFreeman4Logos merged 1 commit intomainfrom
feat/review-debate-model-field

Conversation

@RyderFreeman4Logos
Copy link
Owner

Summary

  • Add dedicated model field to ReviewConfig and DebateConfig (both global and project-level) so review/debate workflows can pin a specific model (e.g. gemini-3.1-pro-preview) independent of tier or tool defaults
  • Implement model resolution hierarchy: CLI --model > config [review/debate].model > tier model_spec > tool default
  • Add Executor::override_model() method parallel to existing override_thinking_budget() for explicit model steering
  • Split global_tests.rs into global_tests.rs + global_tests_heterogeneous.rs to stay under 800-line module limit

Motivation

When apply_tool_defaults = false (intentional for review/debate), tool-level default_model is bypassed. Combined with gemini-cli 0.32+ modelSteering: true, this caused gemini-cli to silently select Flash instead of Pro for critical review/debate tasks. The new model field provides a direct, unambiguous way to pin models at the workflow level.

Test plan

  • All 2450 tests pass (just test)
  • just pre-commit passes (fmt, clippy, test, monolith check)
  • New tests: test_parse_review_config_with_model, test_review_config_model_none_is_default, test_review_config_model_skipped_when_none, test_parse_debate_config_with_model, test_debate_config_model_none_is_default
  • Cumulative review (csa review --range main...HEAD) passed clean
  • Backward compatible: model: None default, existing configs parse unchanged

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

Review and debate workflows were not passing --model to gemini-cli,
causing model steering to select Flash instead of Pro. Root cause:
apply_tool_defaults=false (by design) blocks [tools.gemini-cli].default_model,
and ReviewConfig/DebateConfig had no model field of their own.

Changes:
- Add model: Option<String> to ReviewConfig and DebateConfig
- Add Executor::override_model() for explicit model > tier model_spec
- Wire model resolution in review_cmd.rs and debate_cmd.rs
  (CLI --model > config model > tier model_spec > tool default)
- Update build_executor to apply model override when model_spec present
- Split global_tests.rs to stay under 800-line limit
- Add 9 new tests (config parsing, is_default, serialization, override)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@RyderFreeman4Logos
Copy link
Owner Author

Merge rationale: Cloud bot (@codex) is disabled or unavailable. Local csa review --branch main passed CLEAN (or issues were fixed in fallback cycle). Proceeding to merge with local review as the review layer.

@chatgpt-codex-connector
Copy link

To use Codex here, create an environment for this repo.

@RyderFreeman4Logos RyderFreeman4Logos merged commit 780e55b into main Mar 9, 2026
4 of 6 checks passed
@RyderFreeman4Logos RyderFreeman4Logos deleted the feat/review-debate-model-field branch March 9, 2026 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant