1.7 KiB
1.7 KiB
Implementation Plan: Per-Ticket Model Override (per_ticket_model_20260306)
Reference: Spec | Architecture Guide
Phase 1: Model Override Field
Focus: Add field to Ticket dataclass
-
Task 1.1: Initialize MMA Environment
-
Task 1.2: Add model_override to Ticket (
245653c)- WHERE:
src/models.pyTicketdataclass - WHAT: Add optional model override field
- HOW:
@dataclass class Ticket: # ... existing fields ... model_override: Optional[str] = None
- WHERE:
-
Task 1.3: Update serialization (
245653c)- WHERE:
src/models.pyTicket.to_dict()andfrom_dict() - WHAT: Include model_override
- HOW: Add field to dict conversion
- WHERE:
Phase 2: Model Dropdown UI
Focus: Add model selection to ticket display
-
Task 2.1: Get available models list (
63d1b04) -
Task 2.2: Add dropdown to ticket UI (
63d1b04) -
Task 3.1: Color-code override tickets (
63d1b04)
Phase 4: Execution Integration
Focus: Use override in worker execution
- Task 4.1: Check override in ConductorEngine.run()
- WHERE:
src/multi_agent_conductor.pyrun() - WHAT: Use ticket.model_override if set
- HOW:
if ticket.model_override: model_name = ticket.model_override else: # Use existing escalation logic models = ["gemini-2.5-flash-lite", "gemini-2.5-flash", "gemini-3.1-pro-preview"] model_idx = min(ticket.retry_count, len(models) - 1) model_name = models[model_idx]
- WHERE:
Phase 5: Testing
- Task 5.1: Write unit tests
- Task 5.2: Conductor - Phase Verification