b1ee947b32
User: 'isn't AGENT_TOOL_NAMES a redundant thing thats directly associated with the mcp_client.py?' - YES, confirmed. The existing test test_tool_names_subset_of_models_agent_tool_names literally asserts: tool_names() ⊆ AGENT_TOOL_NAMES. So AGENT_TOOL_NAMES is just a hardcoded snapshot of mcp_tool_specs.tool_names(). Action: DELETE AGENT_TOOL_NAMES from models.py (not just move it). Derive at consumer sites: list(mcp_tool_specs.tool_names()). 8 consumer sites to update: - 3 in src/app_controller.py:2110, 2972, 3273 - 5 in tests/test_arch_boundary_phase2.py:23, 29, 31, 32, 33 The cross-check test becomes either redundant or converts to a positive assertion (e.g., assert that the derived list has at least the canonical tool count). models.py reduces further: from ~60 to ~30 lines after deletion. This further reduces the models.py footprint. Combined with the previous audit (move vendor files to ai_client.py, split out mma.py + project.py + project_files.py), models.py becomes essentially empty - just the Pydantic proxy code that may also move to api_hooks.py. Net effect: models.py could be ELIMINATED entirely (becomes ~0 lines or just an __init__.py marker). The followup should consider whether to delete models.py completely.