fix: change hardcoded Opus defaults to Sonnet (fix #433) (#633)

* fix: change hardcoded Opus defaults to Sonnet (fix #433)

- Changed DEFAULT_PHASE_MODELS['planning'] from 'opus' to 'sonnet' in phase_config.py
- Changed DEFAULT_MODEL from 'opus' to 'sonnet' in cli/utils.py
- Changed --model default from 'opus' to 'sonnet' in ideation_runner.py
- Changed --model default from 'opus' to 'sonnet' in roadmap_runner.py
- Changed model field default from 'opus' to 'sonnet' in roadmap/models.py
- Changed model field default from 'opus' to 'sonnet' in ideation/types.py
- Changed model parameter default from 'opus' to 'sonnet' in ideation/config.py

Fixes unexpected Opus usage during initialization failures when Balanced/Sonnet
profile is selected. Users can still explicitly select Opus via CLI args,
Agent Profiles, or task_metadata.json.

Fixes #433

* docs: clarify DEFAULT_PHASE_MODELS comment (code review feedback)

Updated comment to specify fallback matches 'Balanced' profile, not all UI
defaults. This addresses Gemini Code review feedback about misleading comment.

* fix(roadmap): update orchestrator default to sonnet (code review feedback)

CodeRabbit identified a missed hardcoded 'opus' default in RoadmapOrchestrator.
Updated it to 'sonnet' to match the rest of the PR.

* fix(ideation): update internal classes default to sonnet (code review feedback)

André's review identified missed hardcoded 'opus' defaults in:
- IdeationGenerator (apps/backend/ideation/generator.py)
- IdeationOrchestrator (apps/backend/ideation/runner.py)

Updated both to 'sonnet' to fully resolve issue #433.

---------

Co-authored-by: Andy <119136210+AndyMik90@users.noreply.github.com>
This commit is contained in:
Michael Ludlow
2026-01-03 17:46:55 -05:00
committed by GitHub
parent 39da81935b
commit 46c41f8f51
10 changed files with 11 additions and 11 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ from ui import (
)
# Configuration - uses shorthand that resolves via API Profile if configured
DEFAULT_MODEL = "opus"
DEFAULT_MODEL = "sonnet" # Changed from "opus" (fix #433)
def setup_environment() -> Path:
+1 -1
View File
@@ -25,7 +25,7 @@ class IdeationConfigManager:
include_roadmap_context: bool = True,
include_kanban_context: bool = True,
max_ideas_per_type: int = 5,
model: str = "opus",
model: str = "sonnet", # Changed from "opus" (fix #433)
thinking_level: str = "medium",
refresh: bool = False,
append: bool = False,
+1 -1
View File
@@ -56,7 +56,7 @@ class IdeationGenerator:
self,
project_dir: Path,
output_dir: Path,
model: str = "opus",
model: str = "sonnet", # Changed from "opus" (fix #433)
thinking_level: str = "medium",
max_ideas_per_type: int = 5,
):
+1 -1
View File
@@ -41,7 +41,7 @@ class IdeationOrchestrator:
include_roadmap_context: bool = True,
include_kanban_context: bool = True,
max_ideas_per_type: int = 5,
model: str = "opus",
model: str = "sonnet", # Changed from "opus" (fix #433)
thinking_level: str = "medium",
refresh: bool = False,
append: bool = False,
+1 -1
View File
@@ -31,6 +31,6 @@ class IdeationConfig:
include_roadmap_context: bool = True
include_kanban_context: bool = True
max_ideas_per_type: int = 5
model: str = "opus"
model: str = "sonnet" # Changed from "opus" (fix #433)
refresh: bool = False
append: bool = False # If True, preserve existing ideas when merging
+2 -2
View File
@@ -47,10 +47,10 @@ SPEC_PHASE_THINKING_LEVELS: dict[str, str] = {
"complexity_assessment": "medium",
}
# Default phase configuration (matches UI defaults)
# Default phase configuration (fallback, matches 'Balanced' profile)
DEFAULT_PHASE_MODELS: dict[str, str] = {
"spec": "sonnet",
"planning": "opus",
"planning": "sonnet", # Changed from "opus" (fix #433)
"coding": "sonnet",
"qa": "sonnet",
}
+1 -1
View File
@@ -94,7 +94,7 @@ def main():
parser.add_argument(
"--model",
type=str,
default="opus",
default="sonnet", # Changed from "opus" (fix #433)
help="Model to use (haiku, sonnet, opus, or full model ID)",
)
parser.add_argument(
+1 -1
View File
@@ -23,6 +23,6 @@ class RoadmapConfig:
project_dir: Path
output_dir: Path
model: str = "opus"
model: str = "sonnet" # Changed from "opus" (fix #433)
refresh: bool = False # Force regeneration even if roadmap exists
enable_competitor_analysis: bool = False # Enable competitor analysis phase
+1 -1
View File
@@ -27,7 +27,7 @@ class RoadmapOrchestrator:
self,
project_dir: Path,
output_dir: Path | None = None,
model: str = "opus",
model: str = "sonnet", # Changed from "opus" (fix #433)
thinking_level: str = "medium",
refresh: bool = False,
enable_competitor_analysis: bool = False,
+1 -1
View File
@@ -55,7 +55,7 @@ def main():
parser.add_argument(
"--model",
type=str,
default="opus",
default="sonnet", # Changed from "opus" (fix #433)
help="Model to use (haiku, sonnet, opus, or full model ID)",
)
parser.add_argument(