ba1dbd326f
3 fronts, 3 phases, 31 tasks, 12 verification criteria. Based on 3 parallel explore-agent audits of the live codebase. Front A — Gemini CLI Adapter Removal: delete src/gemini_cli_adapter.py + 7 test files; edit ai_client.py (3 functions + 8 dispatch branches + PROVIDERS 8->7); edit app_controller.py (~11 sites) + gui_2.py (2 blocks) + project_manager.py + api_hooks.py; introduce a mock provider that routes to tests/mock_gemini_cli.py so the 9 live_gui sim tests switch from gemini_cli to mock without losing their mock-LLM mechanism; update 7 docs + 5 conductor docs. Front B — Test Suite Cleanup (410 files, 2,133 tests, ~45-60 files downsizable): delete 2 guaranteed-broken chronology tests (import from deleted scripts.audit.*); consolidate 7 test_scavenge_*.py tautologies into 1 test_directive_structure.py; review deprecated-module tests; consolidate ~15 test_*_phase*.py one-offs; migrate 27 src.models shim importers to direct subsystem imports; extract shared mock_controller fixture from ~8 boilerplate-patch files; fix 3 fix-not-skip candidates (Gemini 503 in summarize.summarise_file); audit the 120KB test_gui_2_result.py (9.4% of suite line count in one file). Front C — Metadata-Type Reduction: flip the 38-site MCP dispatch inversion (dispatch()+22 consumers still call str wrappers, not the _result variants); migrate app_controller.py's ~40 in-memory Metadata state sites to typed per-aggregate dataclasses; fix aggregate.py file_items: list[Metadata] -> list[FileItem]; delete dead code (openai_schemas.to_legacy_dict, app_controller._push_mma_state_update). Out of scope: GEMINI_CLI_HOOK_CONTEXT env var + cli_tool_bridge.py + mma_exec.py (meta-tooling, not the provider — separate follow-up if user wants to purge naming).