- ai_client: add current_tier module var; stamp source_tier on every _append_comms entry
- multi_agent_conductor: set current_tier='Tier 3' around send(), clear in finally
- conductor_tech_lead: set current_tier='Tier 2' around send(), clear in finally
- gui_2: _on_tool_log captures current_tier; _append_tool_log stores dict with source_tier
- tests: 8 new tests covering current_tier, source_tier in comms, tool log dict format
All 3 phases complete and verified. 62 lines of dead code removed from gui_2.py.
Meta-Level Sanity Check: 0 new ruff violations introduced.
Next track: mma_agent_focus_ux_20260302 (dependency on Phase 1 now satisfied)
Phase 2: Menu Bar Consolidation
- Deleted dead begin_main_menu_bar() block (24 lines, always-False in HelloImGui)
- Added 'manual slop' > Quit menu to live _show_menus using runner_params.app_shall_exit
- 32 tests passed, import clean
- Quit menu verified by user
Adds 'manual slop' menu before 'Windows' in the live HelloImGui menubar callback.
Quit sets self.runner_params.app_shall_exit = True — the correct HelloImGui API.
Previously the only quit path was the window close button.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
HelloImGui commits the menubar before invoking _gui_func, so begin_main_menu_bar()
always returned False. The 24-line block (Quit, View, Project menus) never executed.
Also removes the misaligned '# ---- Menubar' comment and dead '# --- Hubs ---' comment.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ui_conductor_setup_summary, ui_new_track_name, ui_new_track_desc, ui_new_track_type
were each assigned twice in __init__. Second assignments (308-311) were identical
to the correct first assignments (218-221). Duplicate removed, first assignments kept.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dead version used stale 'type' key (current model uses 'kind'), called nonexistent
_cb_load_prior_log (correct name: cb_load_prior_log), and had begin_child('scroll_area')
ID collision. Python silently discarded it at import time. Live version at line 3400.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Implement Live Worker Streaming: wire ai_client.comms_log_callback to Tier 3 streams
- Add Parallel DAG Execution using asyncio.gather for non-dependent tickets
- Implement Automatic Retry with Model Escalation (Flash-Lite -> Flash -> Pro)
- Add Tier Model Configuration UI to MMA Dashboard with project TOML persistence
- Fix FPS reporting in PerformanceMonitor to prevent transient 0.0 values
- Update Ticket model with retry_count and dictionary-like access
- Stabilize Gemini CLI integration tests and handle script approval events in simulations
- Finalize and verify all 6 phases of the implementation plan
- Add cost tracking with new cost_tracker.py module
- Enhance Track Proposal modal with editable titles and goals
- Add Conductor Setup summary and New Track creation form to MMA Dashboard
- Implement Task DAG editing (add/delete tickets) and track-scoped discussion
- Add visual polish: color-coded statuses, tinted progress bars, and node indicators
- Support live worker streaming from AI providers to GUI panels
- Fix numerous integration test regressions and stabilize headless service
_handle_approve_script existed but was not registered in the click handler dict.
_pending_dialog (PowerShell confirmation) was invisible to the hook API —
only _pending_ask_dialog (MCP tool ask) was exposed.
- gui_2.py: register btn_approve_script -> _handle_approve_script
- api_hooks.py: add pending_script_approval field to mma_status response
- visual_sim_mma_v2.py: _drain_approvals handles pending_script_approval
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- api_hooks.py: add mma_tier_usage to get_mma_status() response
- pytest-timeout 2.4.0 installed so mark.timeout(300) is enforced in CI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- description/status/assigned_to fields now match parse_json_tickets expectations
- Sprint planning branch also detects 'generate the implementation tickets'
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Tier 3 workers need to read/write files in headless mode. Without this
flag, all file tool calls are blocked waiting for interactive permission.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When ANTHROPIC_API_KEY is set in the shell environment, claude --print
routes through the API key instead of subscription auth. Stripping it
forces the CLI to use subscription login for all Tier 3/4 delegation.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add step 1: read mma-tier2-tech-lead.md before any track work
- Add explicit stop rule when Tier 3 delegation fails (credit/API error)
Tier 2 must NOT silently absorb Tier 3 work as a fallback
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Tier 1 planning calls are strategic — the model should never use file tools
during epic initialization. This caused JSON parse failures when the model
tried to verify file references in the epic prompt.
- ai_client.py: add enable_tools param to send() and _send_gemini()
- orchestrator_pm.py: pass enable_tools=False in generate_tracks()
- tests/visual_sim_mma_v2.py: remove file reference from test epic
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Task 2.2 of mma_pipeline_fix_20260301: _cb_plan_epic captures comms baseline before generate_tracks() and pushes mma_tier_usage['Tier 1'] update via custom_callback. _start_track_logic does same for generate_tickets() -> mma_tier_usage['Tier 2'].