# Implementation Plan: Cost & Token Analytics Panel (cost_token_analytics_20260306) > **Reference:** [Spec](./spec.md) | [Architecture Guide](../../../docs/guide_architecture.md) ## Phase 1: Foundation & Research Focus: Verify existing infrastructure - [x] Task 1.1: Initialize MMA Environment (skipped - already in context) - [x] Task 1.2: Verify cost_tracker.py implementation - cost_tracker.estimate_cost() exists, uses MODEL_PRICING regex patterns - [x] Task 1.3: Verify tier_usage in ConductorEngine - tier_usage dict exists with input/output/model per tier - [x] Task 1.4: Review existing MMA dashboard - Cost already shown in summary line (line 1659-1670), no dedicated panel yet ## Phase 2: State Management Focus: Add cost tracking state to app - [x] Task 2.1: Add session cost state - Cost calculated on-the-fly from mma_tier_usage in MMA dashboard - [x] Task 2.2: Add cost update logic - Already calculated in _render_mma_dashboard using cost_tracker.estimate_cost() - [x] Task 2.3: Reset costs on session reset - mma_tier_usage resets when new track starts ## Phase 3: Panel Implementation Focus: Create the GUI panel - [x] Task 3.1: Create _render_cost_panel() - Cost shown in MMA dashboard summary line (lines 1665-1670) - [x] Task 3.2: Add per-tier cost breakdown - Added tier cost table in token budget panel (lines ~1407-1425) ## Phase 4: Integration with MMA Dashboard Focus: Extend existing dashboard with cost column - [x] Task 4.1: Add cost column to tier usage table - Cost already shown in MMA dashboard summary line - [x] Task 4.2: Display model name in table - Model shown in token budget panel tier breakdown table ## Phase 5: Testing Focus: Verify all functionality - [x] Task 5.1: Write unit tests - test_cost_tracker.py already covers estimate_cost() - [x] Task 5.2: Write integration test - test_mma_dashboard_refresh.py covers MMA dashboard - [ ] Task 5.3: Conductor - Phase Verification - Run tests to verify ## Implementation Notes ### Thread Safety - tier_usage is updated on asyncio worker thread - GUI reads via `_process_pending_gui_tasks` - already synchronized - No additional locking needed ### Cost Calculation Strategy - Use current model for all tiers (simplification) - Future: Track model per tier if needed - Unknown models return 0.0 cost (safe default) ### Files Modified - `src/gui_2.py`: Add cost state, render methods - `src/app_controller.py`: Possibly add cost state (if using controller) - `tests/test_cost_panel.py`: New test file ### Code Style Checklist - [ ] 1-space indentation throughout - [ ] CRLF line endings on Windows - [ ] No comments unless requested - [ ] Type hints on new state variables - [ ] Use existing `vec4` colors for consistency