# Implementation Plan: Per-Ticket Model Override (per_ticket_model_20260306) > **Reference:** [Spec](./spec.md) | [Architecture Guide](../../../docs/guide_architecture.md) ## Phase 1: Model Override Field Focus: Add field to Ticket dataclass - [x] Task 1.1: Initialize MMA Environment - [x] Task 1.2: Add model_override to Ticket (245653c) - WHERE: `src/models.py` `Ticket` dataclass - WHAT: Add optional model override field - HOW: ```python @dataclass class Ticket: # ... existing fields ... model_override: Optional[str] = None ``` - [x] Task 1.3: Update serialization (245653c) - WHERE: `src/models.py` `Ticket.to_dict()` and `from_dict()` - WHAT: Include model_override - HOW: Add field to dict conversion ## Phase 2: Model Dropdown UI Focus: Add model selection to ticket display - [x] Task 2.1: Get available models list (63d1b04) - [x] Task 2.2: Add dropdown to ticket UI (63d1b04) - [x] Task 3.1: Color-code override tickets (63d1b04) ## Phase 4: Execution Integration Focus: Use override in worker execution - [x] Task 4.1: Check override in ConductorEngine.run() (e20f8a1) - WHERE: `src/multi_agent_conductor.py` `run()` - WHAT: Use ticket.model_override if set - HOW: ```python 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] ``` ## Phase 5: Testing - [x] Task 5.1: Write unit tests - [x] Task 5.2: Conductor - Phase Verification