From f7f616abb9ac3ff522162cf907cf78e017c0891b Mon Sep 17 00:00:00 2001 From: Ed_ Date: Mon, 22 Jun 2026 12:52:22 -0400 Subject: [PATCH] feat(audit): alias resolution - all real aggregates now have data --- .../2026-06-22/AUDIT_REPORT.md | 9504 ++++++++++++++--- .../2026-06-22/aggregates/CommsLog.dsl | 38 +- .../2026-06-22/aggregates/CommsLog.md | 131 +- .../2026-06-22/aggregates/CommsLog.tree | 25 +- .../2026-06-22/aggregates/CommsLogEntry.dsl | 254 +- .../2026-06-22/aggregates/CommsLogEntry.md | 516 +- .../2026-06-22/aggregates/CommsLogEntry.tree | 195 +- .../2026-06-22/aggregates/FileItem.dsl | 254 +- .../2026-06-22/aggregates/FileItem.md | 516 +- .../2026-06-22/aggregates/FileItem.tree | 195 +- .../2026-06-22/aggregates/FileItems.dsl | 41 +- .../2026-06-22/aggregates/FileItems.md | 132 +- .../2026-06-22/aggregates/FileItems.tree | 23 +- .../2026-06-22/aggregates/History.dsl | 42 +- .../2026-06-22/aggregates/History.md | 145 +- .../2026-06-22/aggregates/History.tree | 26 +- .../2026-06-22/aggregates/HistoryMessage.dsl | 253 +- .../2026-06-22/aggregates/HistoryMessage.md | 505 +- .../2026-06-22/aggregates/HistoryMessage.tree | 195 +- .../2026-06-22/aggregates/Metadata.dsl | 1522 ++- .../2026-06-22/aggregates/Metadata.md | 2939 ++++- .../2026-06-22/aggregates/Metadata.tree | 1382 ++- .../2026-06-22/aggregates/ToolCall.dsl | 250 +- .../2026-06-22/aggregates/ToolCall.md | 489 +- .../2026-06-22/aggregates/ToolCall.tree | 191 +- .../2026-06-22/aggregates/ToolDefinition.dsl | 258 +- .../2026-06-22/aggregates/ToolDefinition.md | 512 +- .../2026-06-22/aggregates/ToolDefinition.tree | 197 +- .../code_path_audit/2026-06-22/call_graph.md | 2361 +++- .../2026-06-22/cross_audit_summary.md | 2 +- .../code_path_audit/2026-06-22/dead_fields.md | 50 +- .../2026-06-22/decomposition_matrix.md | 24 +- .../code_path_audit/2026-06-22/field_usage.md | 83 +- .../code_path_audit/2026-06-22/hot_paths.md | 66 +- .../2026-06-22/organization_deductions.md | 71 +- .../2026-06-22/ssdl_analysis.md | 108 +- .../code_path_audit/2026-06-22/summary.md | 64 +- src/code_path_audit.py | 54 +- 38 files changed, 20604 insertions(+), 3009 deletions(-) diff --git a/docs/reports/code_path_audit/2026-06-22/AUDIT_REPORT.md b/docs/reports/code_path_audit/2026-06-22/AUDIT_REPORT.md index 6c1fb5d1..5827e18b 100644 --- a/docs/reports/code_path_audit/2026-06-22/AUDIT_REPORT.md +++ b/docs/reports/code_path_audit/2026-06-22/AUDIT_REPORT.md @@ -303,6 +303,4178 @@ This section embeds the full per-aggregate audit output. Each aggregate has its ## Pipeline summary +- Producers: 483 +- Consumers: 752 +- Distinct producer fqnames: 457 +- Distinct consumer fqnames: 697 +- Access pattern (aggregate): whole_struct +- Frequency (aggregate): per_turn +- Decomposition direction: hold +- Struct field count (estimated): 6 + +## Producers (483) + +### `src\aggregate.py` (13 producers) + +- `src.aggregate.run` (line 479) +- `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_file_items` (line 158) +- `src.aggregate.build_beads_section` (line 327) +- `src.aggregate._build_files_section_from_items` (line 300) +- `src.aggregate.group_files_by_dir` (line 86) +- `src.aggregate.build_discussion_text` (line 373) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.compute_file_stats` (line 104) +- `src.aggregate.build_discussion_section` (line 125) +- `src.aggregate.build_markdown` (line 475) +- `src.aggregate.build_screenshots_section` (line 142) + +### `src\ai_client.py` (59 producers) + +- `src.ai_client._try_warm_sdk_result` (line 298) +- `src.ai_client._list_llama_models` (line 3024) +- `src.ai_client._get_gemini_history_list` (line 1795) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client.run_tier4_analysis` (line 3082) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client._list_deepseek_models` (line 2135) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.send` (line 3208) +- `src.ai_client._ensure_llama_client` (line 2844) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client.list_models` (line 506) +- `src.ai_client._run_script` (line 1038) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client.run_tier4_patch_generation` (line 3157) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._get_context_marker` (line 218) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._ensure_grok_client` (line 2519) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client._chunk_text` (line 1278) +- `src.ai_client.run_discussion_compression` (line 3409) +- `src.ai_client._run_tier4_patch_generation_result` (line 3118) +- `src.ai_client._get_combined_system_prompt` (line 221) +- `src.ai_client._list_grok_models` (line 2612) +- `src.ai_client._extract_minimax_reasoning` (line 2677) +- `src.ai_client._extract_gemini_thoughts_result` (line 1768) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client.run_with_tool_loop` (line 833) +- `src.ai_client.get_provider` (line 448) +- `src.ai_client._build_file_context_text` (line 1092) +- `src.ai_client.run_tier4_patch_callback` (line 3115) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._list_gemini_cli_models` (line 1616) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client.get_combined_system_prompt` (line 236) +- `src.ai_client._list_qwen_models` (line 2769) +- `src.ai_client._run_tier4_analysis_result` (line 3042) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client.get_current_tier` (line 159) +- `src.ai_client.get_bias_profile` (line 619) +- `src.ai_client._truncate_tool_output` (line 1047) +- `src.ai_client._build_file_diff_text` (line 1105) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client.run_subagent_summarization` (line 3356) + +### `src\api_hook_client.py` (49 producers) + +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.approve_mma_ticket` (line 583) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client.pause_mma_pipeline` (line 565) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.mutate_mma_dag` (line 576) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.kill_mma_worker` (line 561) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_text_value` (line 204) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.spawn_mma_worker` (line 553) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.inject_context` (line 484) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.get_indicator_state` (line 303) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.get_value` (line 172) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.resume_mma_pipeline` (line 572) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\api_hooks.py` (2 producers) + +- `src.api_hooks._get_app_attr` (line 56) +- `src.api_hooks._safe_controller_result` (line 81) + +### `src\api_hooks_helpers.py` (1 producer) + +- `src.api_hooks_helpers._get_app_attr` (line 3) + +### `src\app_controller.py` (72 producers) + +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._api_post_api_session` (line 178) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller.post_gui` (line 2841) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._confirm_and_run` (line 4402) +- `src.app_controller.current_model` (line 2796) +- `src.app_controller.rag_source` (line 1676) +- `src.app_controller._api_health` (line 116) +- `src.app_controller.current_provider` (line 2780) +- `src.app_controller._api_status` (line 209) +- `src.app_controller.startup_timeline` (line 1435) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller.warmup_status` (line 2593) +- `src.app_controller._get_discussion_names` (line 3741) +- `src.app_controller._api_post_gui` (line 162) +- `src.app_controller._api_confirm_action` (line 346) +- `src.app_controller.list_sessions` (line 2880) +- `src.app_controller.get_symbol_definition` (line 69) +- `src.app_controller.delete_session` (line 2889) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.warmup_canaries` (line 2601) +- `src.app_controller._extract_tool_name` (line 4460) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller.parse_symbols` (line 63) +- `src.app_controller._api_list_sessions` (line 364) +- `src.app_controller.rag_mcp_server` (line 1711) +- `src.app_controller._compute_warmup_list` (line 2570) +- `src.app_controller._resolve_log_ref` (line 2145) +- `src.app_controller.stream` (line 2871) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.ai_status` (line 1598) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller.confirm_action` (line 2877) +- `src.app_controller._api_get_key` (line 100) +- `src.app_controller.active_project_root` (line 1546) +- `src.app_controller.submit_io` (line 2646) +- `src.app_controller.status` (line 2865) +- `src.app_controller.summary_cache` (line 1618) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.rag_emb_provider` (line 1686) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_api_session` (line 2847) +- `src.app_controller._do_generate` (line 4004) +- `src.app_controller.mcp_config_json` (line 1734) +- `src.app_controller.wait` (line 5205) +- `src.app_controller.ui_file_paths` (line 1764) +- `src.app_controller.__getattr__` (line 1273) +- `src.app_controller.get_api_key` (line 2823) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller.rag_mcp_tool` (line 1718) +- `src.app_controller.post_api_session` (line 2850) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller._api_delete_session` (line 385) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.health` (line 2826) +- `src.app_controller._api_stream` (line 327) +- `src.app_controller.mma_status` (line 1606) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.rag_collection_name` (line 1725) + +### `src\beads_client.py` (2 producers) + +- `src.beads_client._read_beads` (line 77) +- `src.beads_client.create_bead` (line 42) + +### `src\code_path_audit.py` (14 producers) + +- `src.code_path_audit.generate_rationale` (line 606) +- `src.code_path_audit._extract_type_name` (line 172) +- `src.code_path_audit.to_markdown` (line 939) +- `src.code_path_audit.load_frequency_overrides` (line 494) +- `src.code_path_audit._atom` (line 865) +- `src.code_path_audit.read_input_json` (line 660) +- `src.code_path_audit.to_tree` (line 1007) +- `src.code_path_audit._resolve_aliases` (line 224) +- `src.code_path_audit.render_rollups` (line 1268) +- `src.code_path_audit.to_dsl_v2` (line 871) +- `src.code_path_audit.code_path_audit_v2` (line 1349) +- `src.code_path_audit.parse_dsl_v2` (line 1034) +- `src.code_path_audit.run_all_cross_audit_reads` (line 823) +- `src.code_path_audit.load_memory_dim_overrides` (line 378) + +### `src\code_path_audit_analysis.py` (2 producers) + +- `src.code_path_audit_analysis._field_names_for_aggregate` (line 32) +- `src.code_path_audit_analysis._analyze_function_param_names` (line 67) + +### `src\code_path_audit_cross_audit.py` (5 producers) + +- `src.code_path_audit_cross_audit._normalize_path` (line 66) +- `src.code_path_audit_cross_audit.map_finding_to_aggregates` (line 71) +- `src.code_path_audit_cross_audit.aggregate_findings` (line 93) +- `src.code_path_audit_cross_audit._file_to_aggregates` (line 36) +- `src.code_path_audit_cross_audit._aggregate_for_fqname` (line 51) + +### `src\code_path_audit_render.py` (3 producers) + +- `src.code_path_audit_render.render_full_markdown` (line 16) +- `src.code_path_audit_render.render_call_graph_rollup` (line 309) +- `src.code_path_audit_render.render_field_usage_rollup` (line 285) + +### `src\code_path_audit_ssdl.py` (4 producers) + +- `src.code_path_audit_ssdl.render_ssdl_sketch` (line 175) +- `src.code_path_audit_ssdl.suggest_defusing_technique` (line 128) +- `src.code_path_audit_ssdl.render_organization_deductions` (line 259) +- `src.code_path_audit_ssdl.render_ssdl_rollup` (line 221) + +### `src\command_palette.py` (1 producer) + +- `src.command_palette.register` (line 32) + +### `src\commands.py` (3 producers) + +- `src.commands.register` (line 39) +- `src.commands.__getattr__` (line 43) +- `src.commands._get_real_registry` (line 47) + +### `src\conductor_tech_lead.py` (2 producers) + +- `src.conductor_tech_lead.generate_tickets` (line 45) +- `src.conductor_tech_lead.topological_sort` (line 107) + +### `src\dag_engine.py` (1 producer) + +- `src.dag_engine.topological_sort` (line 130) + +### `src\diff_viewer.py` (1 producer) + +- `src.diff_viewer.get_line_color` (line 117) + +### `src\events.py` (3 producers) + +- `src.events.to_dict` (line 166) +- `src.events._make_serializable` (line 170) +- `src.events.get` (line 119) + +### `src\external_editor.py` (3 producers) + +- `src.external_editor.create_temp_modified_file` (line 147) +- `src.external_editor.build_diff_command` (line 30) +- `src.external_editor._find_vscode_common_paths` (line 90) + +### `src\file_cache.py` (10 producers) + +- `src.file_cache.get_curated_view` (line 291) +- `src.file_cache.update_definition` (line 790) +- `src.file_cache.get_file_id` (line 895) +- `src.file_cache.get_targeted_view` (line 371) +- `src.file_cache.get_skeleton` (line 207) +- `src.file_cache.find_id` (line 129) +- `src.file_cache._get_name` (line 123) +- `src.file_cache.get_definition` (line 538) +- `src.file_cache.get_code_outline` (line 748) +- `src.file_cache.get_signature` (line 636) + +### `src\fuzzy_anchor.py` (2 producers) + +- `src.fuzzy_anchor.get_context` (line 9) +- `src.fuzzy_anchor.create_slice` (line 20) + +### `src\gemini_cli_adapter.py` (1 producer) + +- `src.gemini_cli_adapter.send` (line 61) + +### `src\gui_2.py` (20 producers) + +- `src.gui_2._populate_auto_slices_file_read_result` (line 7956) +- `src.gui_2.ui_message` (line 7544) +- `src.gui_2.askdirectory` (line 90) +- `src.gui_2.__getattr__` (line 742) +- `src.gui_2._capture_workspace_profile_ini_result` (line 8398) +- `src.gui_2._render_context_batch_actions_preview_result` (line 8167) +- `src.gui_2._render_ast_inspector_outline_result` (line 7863) +- `src.gui_2._resolve_font_path_result` (line 227) +- `src.gui_2._diag_layout_state_ini_text_result` (line 8373) +- `src.gui_2.missing_files` (line 806) +- `src.gui_2._render_warmup_status_indicator_result` (line 7732) +- `src.gui_2.app_debug_info` (line 810) +- `src.gui_2.current_provider` (line 772) +- `src.gui_2.askopenfilename` (line 88) +- `src.gui_2.truncate_entries` (line 173) +- `src.gui_2.ui_screenshot_paths` (line 1014) +- `src.gui_2.asksaveasfilename` (line 91) +- `src.gui_2.current_model` (line 780) +- `src.gui_2.ui_file_paths` (line 995) +- `src.gui_2._populate_auto_slices_outline_result` (line 7926) + +### `src\history.py` (1 producer) + +- `src.history.to_dict` (line 24) + +### `src\hot_reloader.py` (1 producer) + +- `src.hot_reloader.capture_state` (line 33) + +### `src\log_registry.py` (6 producers) + +- `src.log_registry.get_old_non_whitelisted_sessions` (line 390) +- `src.log_registry.__getitem__` (line 93) +- `src.log_registry.to_dict` (line 81) +- `src.log_registry.to_dict` (line 62) +- `src.log_registry.get` (line 105) +- `src.log_registry.sessions` (line 155) + +### `src\markdown_helper.py` (4 producers) + +- `src.markdown_helper.detect_language` (line 378) +- `src.markdown_helper._normalize_bullet_delimiters` (line 215) +- `src.markdown_helper._normalize_nested_list_endings` (line 228) +- `src.markdown_helper._normalize_list_continuations` (line 254) + +### `src\markdown_table.py` (1 producer) + +- `src.markdown_table._split_row` (line 36) + +### `src\mcp_client.py` (87 producers) + +- `src.mcp_client.py_find_usages` (line 1431) +- `src.mcp_client.ts_c_update_definition_result` (line 496) +- `src.mcp_client.get_file_summary` (line 1093) +- `src.mcp_client.py_get_skeleton_result` (line 595) +- `src.mcp_client.ts_c_get_definition_result` (line 466) +- `src.mcp_client._ast_get_signature` (line 428) +- `src.mcp_client.get_tree` (line 1505) +- `src.mcp_client.py_set_signature` (line 1383) +- `src.mcp_client.ts_cpp_get_skeleton` (line 1217) +- `src.mcp_client.get_file_summary_result` (line 340) +- `src.mcp_client.dispatch` (line 1772) +- `src.mcp_client.ts_cpp_get_code_outline` (line 1231) +- `src.mcp_client.py_update_definition_result` (line 663) +- `src.mcp_client.read_file` (line 203) +- `src.mcp_client._build_tree` (line 1002) +- `src.mcp_client.py_get_signature_result` (line 684) +- `src.mcp_client._ast_update_definition` (line 432) +- `src.mcp_client.fetch_url_result` (line 1043) +- `src.mcp_client.get_git_diff_result` (line 397) +- `src.mcp_client.ts_cpp_update_definition_result` (line 576) +- `src.mcp_client.ts_cpp_update_definition` (line 1269) +- `src.mcp_client.async_dispatch` (line 1752) +- `src.mcp_client.py_get_definition_result` (line 646) +- `src.mcp_client.list_directory_result` (line 256) +- `src.mcp_client.ts_cpp_get_skeleton_result` (line 515) +- `src.mcp_client.py_get_imports` (line 1443) +- `src.mcp_client.search_files` (line 177) +- `src.mcp_client.py_get_var_declaration_result` (line 767) +- `src.mcp_client.read_file_result` (line 239) +- `src.mcp_client.derive_code_path` (line 1491) +- `src.mcp_client.ts_cpp_get_signature_result` (line 561) +- `src.mcp_client.py_get_symbol_info` (line 1335) +- `src.mcp_client.py_get_hierarchy` (line 1467) +- `src.mcp_client.py_set_signature_result` (line 714) +- `src.mcp_client.py_set_var_declaration` (line 1419) +- `src.mcp_client.py_get_class_summary` (line 1395) +- `src.mcp_client.py_check_syntax_result` (line 880) +- `src.mcp_client.ts_c_get_skeleton` (line 1149) +- `src.mcp_client.get_tool_schemas` (line 1954) +- `src.mcp_client.py_set_var_declaration_result` (line 789) +- `src.mcp_client.ts_cpp_get_definition` (line 1245) +- `src.mcp_client.get_all_tools` (line 1737) +- `src.mcp_client.py_get_imports_result` (line 853) +- `src.mcp_client.ts_c_get_code_outline` (line 1163) +- `src.mcp_client.py_get_definition` (line 1347) +- `src.mcp_client.set_file_slice` (line 1120) +- `src.mcp_client.search_files_result` (line 284) +- `src.mcp_client.py_update_definition` (line 1359) +- `src.mcp_client.ts_cpp_get_code_outline_result` (line 530) +- `src.mcp_client.get_file_slice` (line 1108) +- `src.mcp_client.web_search_result` (line 1026) +- `src.mcp_client.py_get_code_outline` (line 1323) +- `src.mcp_client.py_get_signature` (line 1371) +- `src.mcp_client.py_get_docstring` (line 1479) +- `src.mcp_client.py_get_symbol_info_result` (line 629) +- `src.mcp_client.derive_code_path_result` (line 923) +- `src.mcp_client.ts_cpp_get_signature` (line 1257) +- `src.mcp_client.ts_c_get_code_outline_result` (line 451) +- `src.mcp_client.edit_file_result` (line 312) +- `src.mcp_client._ast_get_definition` (line 424) +- `src.mcp_client.py_get_code_outline_result` (line 612) +- `src.mcp_client.ts_c_get_signature_result` (line 481) +- `src.mcp_client.get_ui_performance` (line 1601) +- `src.mcp_client.web_search` (line 1578) +- `src.mcp_client.get_tree_result` (line 992) +- `src.mcp_client.ts_cpp_get_definition_result` (line 546) +- `src.mcp_client.async_dispatch` (line 1939) +- `src.mcp_client.py_get_class_summary_result` (line 737) +- `src.mcp_client.get_ui_performance_result` (line 1066) +- `src.mcp_client.fetch_url` (line 1590) +- `src.mcp_client.py_get_docstring_result` (line 898) +- `src.mcp_client.set_file_slice_result` (line 374) +- `src.mcp_client.get_servers_status` (line 1748) +- `src.mcp_client.py_check_syntax` (line 1455) +- `src.mcp_client.edit_file` (line 1079) +- `src.mcp_client._ast_get_skeleton` (line 416) +- `src.mcp_client._ast_get_code_outline` (line 420) +- `src.mcp_client.get_file_slice_result` (line 357) +- `src.mcp_client.get_git_diff` (line 1132) +- `src.mcp_client.ts_c_update_definition` (line 1201) +- `src.mcp_client.py_get_skeleton` (line 1311) +- `src.mcp_client.py_get_var_declaration` (line 1407) +- `src.mcp_client.py_find_usages_result` (line 811) +- `src.mcp_client.ts_c_get_skeleton_result` (line 436) +- `src.mcp_client.ts_c_get_definition` (line 1177) +- `src.mcp_client.ts_c_get_signature` (line 1189) +- `src.mcp_client.list_directory` (line 191) + +### `src\mcp_tool_specs.py` (3 producers) + +- `src.mcp_tool_specs.tool_names` (line 77) +- `src.mcp_tool_specs.to_dict` (line 33) +- `src.mcp_tool_specs.to_dict` (line 46) + +### `src\models.py` (28 producers) + +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 1059) +- `src.models.provider` (line 770) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 618) +- `src.models.get` (line 349) +- `src.models.model` (line 775) +- `src.models.to_dict` (line 1000) +- `src.models.__getattr__` (line 271) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models._clean_nones` (line 179) +- `src.models.to_dict` (line 938) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 701) + +### `src\module_loader.py` (1 producer) + +- `src.module_loader._require_warmed` (line 35) + +### `src\openai_compatible.py` (1 producer) + +- `src.openai_compatible._to_dict_tool_call` (line 54) + +### `src\openai_schemas.py` (3 producers) + +- `src.openai_schemas.to_legacy_dict` (line 80) +- `src.openai_schemas.to_dict` (line 35) +- `src.openai_schemas.to_dict` (line 54) + +### `src\orchestrator_pm.py` (2 producers) + +- `src.orchestrator_pm.generate_tracks` (line 58) +- `src.orchestrator_pm.get_track_history_summary` (line 14) + +### `src\outline_tool.py` (3 producers) + +- `src.outline_tool.get_outline` (line 127) +- `src.outline_tool.get_docstring` (line 56) +- `src.outline_tool.outline` (line 44) + +### `src\paths.py` (2 producers) + +- `src.paths.get_full_path_info` (line 281) +- `src.paths.info` (line 286) + +### `src\performance_monitor.py` (1 producer) + +- `src.performance_monitor.get_metrics` (line 233) + +### `src\personas.py` (3 producers) + +- `src.personas.load_all` (line 29) +- `src.personas._load_file` (line 86) +- `src.personas.get_persona_scope` (line 61) + +### `src\presets.py` (3 producers) + +- `src.presets.get_preset_scope` (line 84) +- `src.presets._load_file` (line 99) +- `src.presets.load_all` (line 24) + +### `src\project_manager.py` (15 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.load_track_history` (line 314) +- `src.project_manager.calculate_track_progress` (line 420) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.now_ts` (line 39) +- `src.project_manager.clean_nones` (line 220) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.get_git_commit` (line 104) +- `src.project_manager.format_discussion` (line 69) + +### `src\provider_state.py` (1 producer) + +- `src.provider_state.providers` (line 68) + +### `src\qwen_adapter.py` (1 producer) + +- `src.qwen_adapter.build_dashscope_tools` (line 13) + +### `src\rag_engine.py` (3 producers) + +- `src.rag_engine.get_all_indexed_paths` (line 382) +- `src.rag_engine._chunk_text` (line 210) +- `src.rag_engine._read_file_content_result` (line 278) + +### `src\result_types.py` (1 producer) + +- `src.result_types.ui_message` (line 27) + +### `src\session_logger.py` (3 producers) + +- `src.session_logger.log_tool_call` (line 166) +- `src.session_logger._now_ts` (line 57) +- `src.session_logger.log_tool_output` (line 211) + +### `src\shell_runner.py` (3 producers) + +- `src.shell_runner._build_subprocess_env` (line 43) +- `src.shell_runner._load_env_config` (line 27) +- `src.shell_runner.run_powershell` (line 58) + +### `src\startup_profiler.py` (1 producer) + +- `src.startup_profiler.snapshot` (line 64) + +### `src\summarize.py` (7 producers) + +- `src.summarize._summarise_generic` (line 121) +- `src.summarize.summarise_items` (line 194) +- `src.summarize.build_summary_markdown` (line 212) +- `src.summarize.summarise_file` (line 159) +- `src.summarize._summarise_markdown` (line 105) +- `src.summarize._summarise_python` (line 31) +- `src.summarize._summarise_toml` (line 78) + +### `src\summary_cache.py` (3 producers) + +- `src.summary_cache.get_stats` (line 102) +- `src.summary_cache.get_file_hash` (line 10) +- `src.summary_cache.get_summary` (line 57) + +### `src\synthesis_formatter.py` (1 producer) + +- `src.synthesis_formatter.format_takes_diff` (line 1) + +### `src\theme_2.py` (6 producers) + +- `src.theme_2.get_palette_names` (line 291) +- `src.theme_2.get_syntax_palette_for_theme` (line 351) +- `src.theme_2.get_current_font_path` (line 123) +- `src.theme_2.get_current_palette` (line 117) +- `src.theme_2.get_font_loading_params` (line 377) +- `src.theme_2._build_semantic_colour_dict` (line 52) + +### `src\theme_models.py` (4 producers) + +- `src.theme_models.load_themes_from_dir` (line 181) +- `src.theme_models.to_dict` (line 137) +- `src.theme_models.to_dict` (line 107) +- `src.theme_models.load_themes_from_toml` (line 200) + +### `src\tool_bias.py` (1 producer) + +- `src.tool_bias.generate_tooling_strategy` (line 43) + +### `src\tool_presets.py` (4 producers) + +- `src.tool_presets._read_raw` (line 28) +- `src.tool_presets.load_all_presets` (line 42) +- `src.tool_presets.load_all_bias_profiles` (line 91) +- `src.tool_presets.load_all` (line 63) + +### `src\vendor_capabilities.py` (1 producer) + +- `src.vendor_capabilities.list_models_for_vendor` (line 44) + +### `src\warmup.py` (3 producers) + +- `src.warmup.status` (line 120) +- `src.warmup.canaries` (line 128) +- `src.warmup._snapshot` (line 355) + +### `src\workspace_manager.py` (2 producers) + +- `src.workspace_manager.load_all_profiles` (line 30) +- `src.workspace_manager._load_file` (line 72) + +## Consumers (752) + +### `src\aggregate.py` (14 consumers) + +- `src.aggregate.is_absolute_with_drive` (line 60) +- `src.aggregate._build_files_section_from_items` (line 300) +- `src.aggregate.group_files_by_dir` (line 86) +- `src.aggregate.compute_file_stats` (line 104) +- `src.aggregate.build_discussion_text` (line 373) +- `src.aggregate.build_markdown` (line 475) +- `src.aggregate.resolve_paths` (line 68) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.build_discussion_section` (line 125) +- `src.aggregate.build_screenshots_section` (line 142) +- `src.aggregate.find_next_increment` (line 50) +- `src.aggregate.run` (line 479) +- `src.aggregate.build_markdown_from_items` (line 348) + +### `src\ai_client.py` (74 consumers) + +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client.run_tier4_analysis` (line 3082) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client._list_deepseek_models` (line 2135) +- `src.ai_client._extract_gemini_thoughts_result` (line 1768) +- `src.ai_client._classify_minimax_error` (line 375) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client.set_current_tier` (line 163) +- `src.ai_client._send_cli_round_result` (line 1746) +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client.list_models` (line 506) +- `src.ai_client._run_script` (line 1038) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._dashscope_exception_from_response` (line 2750) +- `src.ai_client.set_agent_tools` (line 532) +- `src.ai_client.run_tier4_patch_generation` (line 3157) +- `src.ai_client.set_bias_profile` (line 611) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client.run_tier4_patch_callback` (line 3115) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client.run_discussion_compression` (line 3409) +- `src.ai_client._run_tier4_patch_callback_result` (line 3089) +- `src.ai_client._set_tool_preset_result` (line 539) +- `src.ai_client._run_tier4_analysis_result` (line 3042) +- `src.ai_client._extract_minimax_reasoning` (line 2677) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._classify_anthropic_error` (line 315) +- `src.ai_client._should_cache_gemini_result` (line 1679) +- `src.ai_client.set_base_system_prompt` (line 206) +- `src.ai_client._set_minimax_provider_result` (line 398) +- `src.ai_client._count_gemini_tokens_for_stats_result` (line 3163) +- `src.ai_client.run_with_tool_loop` (line 833) +- `src.ai_client.set_project_context_marker` (line 214) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._list_gemini_models_result` (line 1626) +- `src.ai_client.set_custom_system_prompt` (line 201) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._classify_deepseek_error` (line 349) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.set_provider` (line 417) +- `src.ai_client.send` (line 3208) +- `src.ai_client._truncate_tool_output` (line 1047) +- `src.ai_client._execute_tool_calls_concurrently` (line 758) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client.set_tool_preset` (line 576) +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client.run_subagent_summarization` (line 3356) +- `src.ai_client._list_minimax_models_result` (line 2436) +- `src.ai_client._try_warm_sdk_result` (line 298) +- `src.ai_client._set_bias_profile_result` (line 590) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._classify_gemini_error` (line 333) +- `src.ai_client._get_gemini_history_list` (line 1795) +- `src.ai_client._chunk_text` (line 1278) +- `src.ai_client._run_tier4_patch_generation_result` (line 3118) +- `src.ai_client._estimate_message_tokens` (line 1218) + +### `src\api_hook_client.py` (26 consumers) + +- `src.api_hook_client.approve_mma_ticket` (line 583) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.mutate_mma_dag` (line 576) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.kill_mma_worker` (line 561) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.get_text_value` (line 204) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.spawn_mma_worker` (line 553) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.request_confirmation` (line 244) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.inject_context` (line 484) +- `src.api_hook_client.__init__` (line 58) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_indicator_state` (line 303) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.get_value` (line 172) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.select_list_item` (line 256) + +### `src\api_hooks.py` (10 consumers) + +- `src.api_hooks._get_app_attr` (line 56) +- `src.api_hooks.__init__` (line 910) +- `src.api_hooks.__init__` (line 133) +- `src.api_hooks._safe_controller_result` (line 81) +- `src.api_hooks._parse_float_result` (line 100) +- `src.api_hooks._set_app_attr` (line 72) +- `src.api_hooks.__init__` (line 857) +- `src.api_hooks.log_message` (line 853) +- `src.api_hooks._has_app_attr` (line 66) +- `src.api_hooks._serialize_for_api` (line 142) + +### `src\api_hooks_helpers.py` (3 consumers) + +- `src.api_hooks_helpers._get_app_attr` (line 3) +- `src.api_hooks_helpers._has_app_attr` (line 13) +- `src.api_hooks_helpers._set_app_attr` (line 19) + +### `src\app_controller.py` (123 consumers) + +- `src.app_controller._flush_to_project_result` (line 2180) +- `src.app_controller._handle_mma_state_update` (line 460) +- `src.app_controller._on_comms_entry` (line 4282) +- `src.app_controller._rename_discussion` (line 4115) +- `src.app_controller._topological_sort_tickets_result` (line 4708) +- `src.app_controller.ui_file_paths` (line 1768) +- `src.app_controller.rag_emb_provider` (line 1690) +- `src.app_controller._cb_save_view_preset` (line 3696) +- `src.app_controller._handle_set_tool_log_dirty` (line 737) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._set_rag_status` (line 3434) +- `src.app_controller.__init__` (line 5194) +- `src.app_controller.mutate_dag` (line 4877) +- `src.app_controller.cb_load_prior_log` (line 2120) +- `src.app_controller._save_fallback_project_result` (line 2461) +- `src.app_controller._handle_clear_summary_cache` (line 3372) +- `src.app_controller._update_gcli_adapter` (line 1831) +- `src.app_controller._delete_discussion` (line 4131) +- `src.app_controller._handle_click` (line 583) +- `src.app_controller._symbol_resolution_result` (line 3506) +- `src.app_controller.current_provider` (line 2784) +- `src.app_controller._on_ai_stream` (line 4271) +- `src.app_controller._api_post_gui` (line 162) +- `src.app_controller._handle_hide_patch_modal` (line 751) +- `src.app_controller._api_confirm_action` (line 346) +- `src.app_controller._cb_load_track_result` (line 5013) +- `src.app_controller.get_symbol_definition` (line 69) +- `src.app_controller._create_discussion` (line 4081) +- `src.app_controller.delete_session` (line 2889) +- `src.app_controller._handle_mma_step_approval` (line 648) +- `src.app_controller.mma_status` (line 1610) +- `src.app_controller._cb_save_workspace_profile` (line 2910) +- `src.app_controller._spawn_worker` (line 4829) +- `src.app_controller._extract_tool_name` (line 4460) +- `src.app_controller.__init__` (line 5172) +- `src.app_controller.approve_ticket` (line 4864) +- `src.app_controller.__init__` (line 78) +- `src.app_controller._do_project_switch` (line 3146) +- `src.app_controller._handle_show_track_proposal` (line 538) +- `src.app_controller.load_context_preset` (line 3394) +- `src.app_controller._handle_set_value` (line 562) +- `src.app_controller.parse_symbols` (line 63) +- `src.app_controller.inject_context` (line 2523) +- `src.app_controller._cb_start_track` (line 4662) +- `src.app_controller._append_tool_log` (line 4381) +- `src.app_controller._cb_delete_persona` (line 3689) +- `src.app_controller._test_callback_func_write_to_file` (line 1932) +- `src.app_controller._apply_preset` (line 3616) +- `src.app_controller._resolve_log_ref` (line 2145) +- `src.app_controller._list_models_for_provider_result` (line 3544) +- `src.app_controller._cb_ticket_retry` (line 4809) +- `src.app_controller._handle_custom_callback` (line 543) +- `src.app_controller.kill_worker` (line 4841) +- `src.app_controller._handle_set_mma_status` (line 525) +- `src.app_controller.resolve_pending_action` (line 4442) +- `src.app_controller._record_startup_timeline_error` (line 1412) +- `src.app_controller._on_api_event` (line 4260) +- `src.app_controller._api_delete_session` (line 385) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._handle_clear_ask` (line 641) +- `src.app_controller.rag_mcp_server` (line 1714) +- `src.app_controller._fetch_models` (line 3565) +- `src.app_controller.current_model` (line 2800) +- `src.app_controller.confirm_action` (line 2877) +- `src.app_controller._cb_ticket_skip` (line 4819) +- `src.app_controller._api_get_key` (line 100) +- `src.app_controller._handle_drag` (line 613) +- `src.app_controller._rag_search_result` (line 3488) +- `src.app_controller._deserialize_active_track_result` (line 2195) +- `src.app_controller.rag_source` (line 1680) +- `src.app_controller.start_services` (line 2560) +- `src.app_controller._handle_select_list_item` (line 628) +- `src.app_controller._cb_apply_view_preset` (line 3714) +- `src.app_controller._handle_refresh_from_project` (line 741) +- `src.app_controller._handle_ask` (line 635) +- `src.app_controller._cb_delete_bias_profile` (line 3678) +- `src.app_controller._on_tool_log` (line 4230) +- `src.app_controller._cb_load_workspace_profile` (line 2930) +- `src.app_controller.__getattr__` (line 1273) +- `src.app_controller._init_ai_and_hooks` (line 2718) +- `src.app_controller._report_worker_error` (line 3528) +- `src.app_controller._handle_ticket_completed` (line 710) +- `src.app_controller._cb_create_track` (line 4944) +- `src.app_controller._confirm_and_run` (line 4402) +- `src.app_controller._set_mcp_config_json_result` (line 1745) +- `src.app_controller.get_api_key` (line 2823) +- `src.app_controller.mcp_config_json` (line 1737) +- `src.app_controller._handle_set_ai_status` (line 521) +- `src.app_controller._handle_mma_stream` (line 529) +- `src.app_controller.post_api_session` (line 2850) +- `src.app_controller._cb_save_bias_profile` (line 3671) +- `src.app_controller._on_performance_alert` (line 3038) +- `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._handle_refresh_api_metrics` (line 517) +- `src.app_controller._on_warmup_complete_for_timeline` (line 1504) +- `src.app_controller.set_vendor_quota` (line 3101) +- `src.app_controller._switch_project` (line 3193) +- `src.app_controller._load_project_from_path_result` (line 2446) +- `src.app_controller._on_sigint` (line 780) +- `src.app_controller._start_track_logic` (line 4721) +- `src.app_controller._switch_discussion` (line 3749) +- `src.app_controller._handle_right_click` (line 621) +- `src.app_controller._handle_show_patch_modal` (line 745) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._cb_delete_view_preset` (line 3724) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.rag_mcp_tool` (line 1721) +- `src.app_controller._cb_delete_workspace_profile` (line 2921) +- `src.app_controller._handle_mma_respond` (line 4972) +- `src.app_controller._api_post_api_session` (line 178) +- `src.app_controller._execute_gui_task_result` (line 1866) +- `src.app_controller._handle_ticket_started` (line 689) +- `src.app_controller.post_gui` (line 2841) +- `src.app_controller._cb_load_track` (line 5000) +- `src.app_controller._cb_save_persona` (line 3682) +- `src.app_controller._parse_token_history_first_ts_result` (line 2232) +- `src.app_controller.rag_collection_name` (line 1728) +- `src.app_controller._handle_set_comms_dirty` (line 733) +- `src.app_controller.ai_status` (line 1602) +- `src.app_controller._cb_new_project_automated` (line 3131) +- `src.app_controller._handle_mma_spawn_approval` (line 662) +- `src.app_controller._handle_bead_updated` (line 721) +- `src.app_controller._handle_ai_response` (line 428) + +### `src\beads_client.py` (3 consumers) + +- `src.beads_client.create_bead` (line 42) +- `src.beads_client.update_bead` (line 55) +- `src.beads_client._write_beads` (line 82) + +### `src\code_path_audit.py` (30 consumers) + +- `src.code_path_audit.aggregate_cross_audit_findings` (line 785) +- `src.code_path_audit.classify_memory_dim` (line 399) +- `src.code_path_audit.estimate_call_frequency` (line 507) +- `src.code_path_audit.detect_access_pattern` (line 444) +- `src.code_path_audit.file_origin_memory_dim` (line 391) +- `src.code_path_audit.synthesize_aggregate_profile` (line 1111) +- `src.code_path_audit.read_input_json` (line 660) +- `src.code_path_audit.is_hot_cold_split` (line 425) +- `src.code_path_audit.P3_pass` (line 280) +- `src.code_path_audit.load_frequency_overrides` (line 494) +- `src.code_path_audit.add_field_access` (line 169) +- `src.code_path_audit._atom` (line 865) +- `src.code_path_audit.build_pcg` (line 300) +- `src.code_path_audit.dominant_pattern` (line 433) +- `src.code_path_audit.P2_pass` (line 264) +- `src.code_path_audit.detect_frequency_from_entry_point` (line 478) +- `src.code_path_audit.compute_result_coverage` (line 741) +- `src.code_path_audit._resolve_aliases` (line 224) +- `src.code_path_audit.run_audit` (line 1217) +- `src.code_path_audit.P1_pass` (line 249) +- `src.code_path_audit.to_dsl_v2` (line 871) +- `src.code_path_audit.compute_decomposition_cost` (line 627) +- `src.code_path_audit.code_path_audit_v2` (line 1349) +- `src.code_path_audit.parse_dsl_v2` (line 1034) +- `src.code_path_audit.run_all_cross_audit_reads` (line 823) +- `src.code_path_audit.add_producer` (line 163) +- `src.code_path_audit.load_memory_dim_overrides` (line 378) +- `src.code_path_audit.add_consumer` (line 166) +- `src.code_path_audit.generate_rationale` (line 606) +- `src.code_path_audit.find_enclosing_function` (line 730) + +### `src\code_path_audit_analysis.py` (10 consumers) + +- `src.code_path_audit_analysis.compute_real_type_alias_coverage` (line 222) +- `src.code_path_audit_analysis.analyze_consumer_pattern` (line 164) +- `src.code_path_audit_analysis.aggregate_pattern_from_consumers` (line 181) +- `src.code_path_audit_analysis.analyze_producer_size` (line 117) +- `src.code_path_audit_analysis.compute_real_decomposition_cost` (line 276) +- `src.code_path_audit_analysis.estimate_struct_size` (line 257) +- `src.code_path_audit_analysis._field_names_for_aggregate` (line 32) +- `src.code_path_audit_analysis._analyze_function_field_accesses` (line 41) +- `src.code_path_audit_analysis.extract_real_optimization_candidates` (line 327) +- `src.code_path_audit_analysis.analyze_consumer_fields` (line 78) + +### `src\code_path_audit_cross_audit.py` (7 consumers) + +- `src.code_path_audit_cross_audit._normalize_path` (line 66) +- `src.code_path_audit_cross_audit.map_finding_to_aggregates` (line 71) +- `src.code_path_audit_cross_audit.aggregate_findings` (line 93) +- `src.code_path_audit_cross_audit._all_function_refs` (line 24) +- `src.code_path_audit_cross_audit._aggregate_for_fqname` (line 51) +- `src.code_path_audit_cross_audit._file_to_aggregates` (line 36) +- `src.code_path_audit_cross_audit.build_cross_audit_findings_for_aggregate` (line 130) + +### `src\code_path_audit_ssdl.py` (8 consumers) + +- `src.code_path_audit_ssdl.render_organization_deductions` (line 259) +- `src.code_path_audit_ssdl.detect_nil_check_pattern` (line 84) +- `src.code_path_audit_ssdl.count_branches_in_function` (line 58) +- `src.code_path_audit_ssdl._resolve_filepath` (line 31) +- `src.code_path_audit_ssdl.render_ssdl_rollup` (line 221) +- `src.code_path_audit_ssdl.compute_effective_codepaths` (line 39) +- `src.code_path_audit_ssdl.render_ssdl_sketch` (line 175) +- `src.code_path_audit_ssdl.suggest_defusing_technique` (line 128) + +### `src\command_palette.py` (11 consumers) + +- `src.command_palette.fuzzy_match` (line 54) +- `src.command_palette._close_palette` (line 107) +- `src.command_palette.render_palette_modal` (line 128) +- `src.command_palette._compute_score` (line 75) +- `src.command_palette.register` (line 32) +- `src.command_palette._is_subsequence` (line 67) +- `src.command_palette._count_gaps` (line 95) +- `src.command_palette._is_contiguous` (line 91) +- `src.command_palette._execute` (line 116) +- `src.command_palette._starts_at_word_boundary` (line 85) +- `src.command_palette.get` (line 50) + +### `src\commands.py` (4 consumers) + +- `src.commands._toggle_window` (line 64) +- `src.commands.register` (line 39) +- `src.commands.__getattr__` (line 43) +- `src.commands._toggle_attr` (line 70) + +### `src\conductor_tech_lead.py` (2 consumers) + +- `src.conductor_tech_lead.topological_sort` (line 107) +- `src.conductor_tech_lead.generate_tickets` (line 45) + +### `src\context_presets.py` (3 consumers) + +- `src.context_presets.load_all` (line 10) +- `src.context_presets.delete_preset` (line 28) +- `src.context_presets.save_preset` (line 22) + +### `src\cost_tracker.py` (1 consumer) + +- `src.cost_tracker.estimate_cost` (line 66) + +### `src\dag_engine.py` (2 consumers) + +- `src.dag_engine.update_task_status` (line 217) +- `src.dag_engine.approve_task` (line 206) + +### `src\diff_viewer.py` (4 consumers) + +- `src.diff_viewer.get_line_color` (line 117) +- `src.diff_viewer.parse_diff` (line 49) +- `src.diff_viewer.parse_hunk_header` (line 27) +- `src.diff_viewer.apply_patch_to_file` (line 126) + +### `src\events.py` (5 consumers) + +- `src.events.__init__` (line 156) +- `src.events._make_serializable` (line 170) +- `src.events.emit` (line 66) +- `src.events.put` (line 100) +- `src.events.on` (line 54) + +### `src\external_editor.py` (5 consumers) + +- `src.external_editor.launch_diff` (line 37) +- `src.external_editor.launch_editor` (line 50) +- `src.external_editor.create_temp_modified_file` (line 147) +- `src.external_editor.build_diff_command` (line 30) +- `src.external_editor.get_editor` (line 22) + +### `src\file_cache.py` (17 consumers) + +- `src.file_cache.walk` (line 799) +- `src.file_cache.walk` (line 646) +- `src.file_cache.__init__` (line 78) +- `src.file_cache.walk` (line 549) +- `src.file_cache.get_targeted_view` (line 371) +- `src.file_cache.get_skeleton` (line 207) +- `src.file_cache.deep_search` (line 858) +- `src.file_cache.get_curated_view` (line 291) +- `src.file_cache.deep_search` (line 705) +- `src.file_cache.get_cached_tree` (line 100) +- `src.file_cache.update_definition` (line 790) +- `src.file_cache.get_definition` (line 538) +- `src.file_cache._get_mtime_safe` (line 48) +- `src.file_cache.get_code_outline` (line 748) +- `src.file_cache.parse` (line 93) +- `src.file_cache.get_signature` (line 636) +- `src.file_cache.deep_search` (line 608) + +### `src\fuzzy_anchor.py` (3 consumers) + +- `src.fuzzy_anchor.create_slice` (line 20) +- `src.fuzzy_anchor.resolve_slice` (line 40) +- `src.fuzzy_anchor.get_context` (line 9) + +### `src\gemini_cli_adapter.py` (3 consumers) + +- `src.gemini_cli_adapter.send` (line 61) +- `src.gemini_cli_adapter.__init__` (line 51) +- `src.gemini_cli_adapter.count_tokens` (line 191) + +### `src\gui_2.py` (44 consumers) + +- `src.gui_2.ui_screenshot_paths` (line 1018) +- `src.gui_2._drain_normalize_errors` (line 7417) +- `src.gui_2.current_model` (line 784) +- `src.gui_2.delete_context_preset` (line 989) +- `src.gui_2._resolve_font_path_result` (line 227) +- `src.gui_2._diag_layout_state_ini_text_result` (line 8373) +- `src.gui_2._tier_stream_scroll_sync_result` (line 1644) +- `src.gui_2._render_ast_inspector_file_content_result` (line 7896) +- `src.gui_2.render_discussion_entry_read_mode` (line 4824) +- `src.gui_2.render_path_field` (line 2494) +- `src.gui_2.ui_file_paths` (line 999) +- `src.gui_2.truncate_entries` (line 173) +- `src.gui_2._simulate_save_preset` (line 547) +- `src.gui_2._on_warmup_complete_callback` (line 4979) +- `src.gui_2._cb_kill_ticket` (line 1403) +- `src.gui_2._ticket_id_max_int_result` (line 1694) +- `src.gui_2._test_callback_func_write_to_file` (line 1030) +- `src.gui_2._load_fonts_main_result` (line 7578) +- `src.gui_2._on_warmup_complete_callback_result` (line 1609) +- `src.gui_2.render_thinking_trace` (line 4672) +- `src.gui_2.__getattr__` (line 73) +- `src.gui_2._set_context_files` (line 542) +- `src.gui_2.render_text_viewer` (line 154) +- `src.gui_2.__setattr__` (line 749) +- `src.gui_2.__init__` (line 7539) +- `src.gui_2.render_discussion_entry` (line 4720) +- `src.gui_2._render_ast_inspector_outline_result` (line 7863) +- `src.gui_2.render_tier_stream_panel` (line 6905) +- `src.gui_2._save_context_preset_force` (line 366) +- `src.gui_2._set_external_editor_default` (line 1242) +- `src.gui_2.render_heavy_text` (line 6400) +- `src.gui_2.__init__` (line 52) +- `src.gui_2._cb_block_ticket` (line 1407) +- `src.gui_2._render_window_if_open` (line 1113) +- `src.gui_2._populate_auto_slices_outline_result` (line 7926) +- `src.gui_2.render_selectable_label` (line 161) +- `src.gui_2._cb_unblock_ticket` (line 1426) +- `src.gui_2.request_patch_from_tier4_result` (line 8089) +- `src.gui_2.load_context_preset` (line 972) +- `src.gui_2.current_provider` (line 776) +- `src.gui_2._capture_workspace_profile` (line 881) +- `src.gui_2.cb_load_prior_log` (line 1235) +- `src.gui_2.request_patch_from_tier4` (line 1379) +- `src.gui_2.__getattr__` (line 742) + +### `src\history.py` (5 consumers) + +- `src.history.undo` (line 92) +- `src.history.push` (line 80) +- `src.history.jump_to_undo` (line 129) +- `src.history.redo` (line 103) +- `src.history.from_dict` (line 45) + +### `src\hot_reloader.py` (4 consumers) + +- `src.hot_reloader.capture_state` (line 33) +- `src.hot_reloader.reload` (line 42) +- `src.hot_reloader.restore_state` (line 37) +- `src.hot_reloader.reload_all` (line 69) + +### `src\imgui_scopes.py` (26 consumers) + +- `src.imgui_scopes.__init__` (line 206) +- `src.imgui_scopes.__init__` (line 157) +- `src.imgui_scopes.tab_bar` (line 187) +- `src.imgui_scopes.style_var` (line 155) +- `src.imgui_scopes.style_color` (line 141) +- `src.imgui_scopes.__init__` (line 171) +- `src.imgui_scopes.__init__` (line 95) +- `src.imgui_scopes.menu` (line 62) +- `src.imgui_scopes.tree_node_ex` (line 243) +- `src.imgui_scopes.__init__` (line 262) +- `src.imgui_scopes.child` (line 9) +- `src.imgui_scopes.__init__` (line 11) +- `src.imgui_scopes.__init__` (line 245) +- `src.imgui_scopes.window` (line 260) +- `src.imgui_scopes.id` (line 37) +- `src.imgui_scopes.tab_item` (line 204) +- `src.imgui_scopes.__init__` (line 39) +- `src.imgui_scopes.table` (line 169) +- `src.imgui_scopes.popup_modal` (line 122) +- `src.imgui_scopes.node` (line 93) +- `src.imgui_scopes.__init__` (line 64) +- `src.imgui_scopes.__init__` (line 189) +- `src.imgui_scopes.__init__` (line 124) +- `src.imgui_scopes.__init__` (line 143) +- `src.imgui_scopes.popup` (line 106) +- `src.imgui_scopes.__init__` (line 108) + +### `src\log_pruner.py` (1 consumer) + +- `src.log_pruner.__init__` (line 18) + +### `src\log_registry.py` (9 consumers) + +- `src.log_registry.update_auto_whitelist_status` (line 329) +- `src.log_registry.is_session_whitelisted` (line 313) +- `src.log_registry.__getitem__` (line 93) +- `src.log_registry.from_dict` (line 113) +- `src.log_registry.get` (line 105) +- `src.log_registry.set_session_start_time` (line 283) +- `src.log_registry.__init__` (line 142) +- `src.log_registry.update_session_metadata` (line 249) +- `src.log_registry.register_session` (line 223) + +### `src\markdown_helper.py` (14 consumers) + +- `src.markdown_helper.render_unindented` (line 404) +- `src.markdown_helper._normalize_nested_list_endings` (line 228) +- `src.markdown_helper._normalize_bullet_delimiters` (line 215) +- `src.markdown_helper._render_code_block` (line 307) +- `src.markdown_helper.render_code` (line 370) +- `src.markdown_helper.render_unindented` (line 303) +- `src.markdown_helper.render` (line 128) +- `src.markdown_helper.render` (line 398) +- `src.markdown_helper._on_open_link` (line 108) +- `src.markdown_helper._normalize_list_continuations` (line 254) +- `src.markdown_helper.render_code` (line 407) +- `src.markdown_helper.detect_language` (line 378) +- `src.markdown_helper._is_likely_lang_tag` (line 375) +- `src.markdown_helper._get_language_id` (line 26) + +### `src\markdown_table.py` (3 consumers) + +- `src.markdown_table._split_row` (line 36) +- `src.markdown_table.parse_tables` (line 47) +- `src.markdown_table._is_table_at` (line 42) + +### `src\mcp_client.py` (94 consumers) + +- `src.mcp_client.get_file_slice` (line 1108) +- `src.mcp_client.py_update_definition_result` (line 663) +- `src.mcp_client.read_file` (line 203) +- `src.mcp_client._ast_update_definition` (line 432) +- `src.mcp_client.py_get_symbol_info_result` (line 629) +- `src.mcp_client.fetch_url_result` (line 1043) +- `src.mcp_client.handle_starttag` (line 1564) +- `src.mcp_client.ts_cpp_update_definition` (line 1269) +- `src.mcp_client.ts_cpp_get_signature` (line 1257) +- `src.mcp_client.ts_c_get_code_outline_result` (line 451) +- `src.mcp_client.async_dispatch` (line 1752) +- `src.mcp_client.list_directory_result` (line 256) +- `src.mcp_client.py_get_imports` (line 1443) +- `src.mcp_client.search_files` (line 177) +- `src.mcp_client.ts_c_get_signature_result` (line 481) +- `src.mcp_client.py_get_var_declaration_result` (line 767) +- `src.mcp_client.read_file_result` (line 239) +- `src.mcp_client.ts_cpp_get_signature_result` (line 561) +- `src.mcp_client.derive_code_path` (line 1491) +- `src.mcp_client.py_get_symbol_info` (line 1335) +- `src.mcp_client.py_get_hierarchy` (line 1467) +- `src.mcp_client.py_set_signature_result` (line 714) +- `src.mcp_client.py_set_var_declaration` (line 1419) +- `src.mcp_client.py_check_syntax_result` (line 880) +- `src.mcp_client.ts_c_get_skeleton` (line 1149) +- `src.mcp_client.py_set_var_declaration_result` (line 789) +- `src.mcp_client.py_get_imports_result` (line 853) +- `src.mcp_client.ts_c_get_code_outline` (line 1163) +- `src.mcp_client.py_get_definition` (line 1347) +- `src.mcp_client.set_file_slice` (line 1120) +- `src.mcp_client.search_files_result` (line 284) +- `src.mcp_client.py_update_definition` (line 1359) +- `src.mcp_client.find_in_scope` (line 1289) +- `src.mcp_client.handle_data` (line 1572) +- `src.mcp_client.ts_cpp_get_code_outline_result` (line 530) +- `src.mcp_client._get_symbol_node` (line 1285) +- `src.mcp_client.web_search_result` (line 1026) +- `src.mcp_client.py_get_code_outline` (line 1323) +- `src.mcp_client.py_get_signature` (line 1371) +- `src.mcp_client.py_get_docstring` (line 1479) +- `src.mcp_client.derive_code_path_result` (line 923) +- `src.mcp_client.get_file_slice_result` (line 357) +- `src.mcp_client.edit_file_result` (line 312) +- `src.mcp_client._ast_get_definition` (line 424) +- `src.mcp_client.py_get_code_outline_result` (line 612) +- `src.mcp_client.configure` (line 108) +- `src.mcp_client.web_search` (line 1578) +- `src.mcp_client.handle_starttag` (line 1527) +- `src.mcp_client.get_tree_result` (line 992) +- `src.mcp_client.ts_cpp_get_definition_result` (line 546) +- `src.mcp_client.async_dispatch` (line 1939) +- `src.mcp_client.py_get_class_summary_result` (line 737) +- `src.mcp_client.get_file_summary` (line 1093) +- `src.mcp_client.py_get_skeleton_result` (line 595) +- `src.mcp_client.handle_data` (line 1551) +- `src.mcp_client._ast_get_signature` (line 428) +- `src.mcp_client.get_tree` (line 1505) +- `src.mcp_client.py_set_signature` (line 1383) +- `src.mcp_client.fetch_url` (line 1590) +- `src.mcp_client.handle_endtag` (line 1568) +- `src.mcp_client.py_get_docstring_result` (line 898) +- `src.mcp_client.set_file_slice_result` (line 374) +- `src.mcp_client.py_check_syntax` (line 1455) +- `src.mcp_client.edit_file` (line 1079) +- `src.mcp_client._ast_get_skeleton` (line 416) +- `src.mcp_client._ast_get_code_outline` (line 420) +- `src.mcp_client.dispatch` (line 1772) +- `src.mcp_client.get_git_diff` (line 1132) +- `src.mcp_client.ts_cpp_get_code_outline` (line 1231) +- `src.mcp_client.ts_c_update_definition` (line 1201) +- `src.mcp_client._build_tree` (line 1002) +- `src.mcp_client.py_get_signature_result` (line 684) +- `src.mcp_client.py_get_skeleton` (line 1311) +- `src.mcp_client.py_get_var_declaration` (line 1407) +- `src.mcp_client.py_find_usages_result` (line 811) +- `src.mcp_client._send_request` (line 1678) +- `src.mcp_client.get_git_diff_result` (line 397) +- `src.mcp_client.ts_cpp_update_definition_result` (line 576) +- `src.mcp_client.ts_c_get_skeleton_result` (line 436) +- `src.mcp_client._resolve_and_check_result` (line 216) +- `src.mcp_client.ts_c_get_definition` (line 1177) +- `src.mcp_client.ts_c_get_signature` (line 1189) +- `src.mcp_client.py_get_definition_result` (line 646) +- `src.mcp_client.list_directory` (line 191) +- `src.mcp_client.ts_cpp_get_skeleton_result` (line 515) +- `src.mcp_client.handle_endtag` (line 1536) +- `src.mcp_client.py_find_usages` (line 1431) +- `src.mcp_client.ts_c_update_definition_result` (line 496) +- `src.mcp_client.py_get_class_summary` (line 1395) +- `src.mcp_client.call_tool` (line 1704) +- `src.mcp_client.ts_c_get_definition_result` (line 466) +- `src.mcp_client.ts_cpp_get_skeleton` (line 1217) +- `src.mcp_client.get_file_summary_result` (line 340) +- `src.mcp_client.ts_cpp_get_definition` (line 1245) + +### `src\mcp_tool_specs.py` (1 consumer) + +- `src.mcp_tool_specs.get_tool_spec` (line 67) + +### `src\models.py` (29 consumers) + +- `src.models.from_dict` (line 506) +- `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 1038) +- `src.models.from_dict` (line 866) +- `src.models.load_mcp_config` (line 1084) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 378) +- `src.models.mark_blocked` (line 319) +- `src.models.from_dict` (line 747) +- `src.models.get` (line 349) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 1072) +- `src.models.__getattr__` (line 271) +- `src.models.from_dict` (line 630) +- `src.models.from_dict` (line 949) +- `src.models._clean_nones` (line 179) +- `src.models.parse_history_entries` (line 214) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.mark_manual_block` (line 326) +- `src.models.from_dict` (line 454) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 1007) + +### `src\module_loader.py` (1 consumer) + +- `src.module_loader._require_warmed` (line 35) + +### `src\multi_agent_conductor.py` (16 consumers) + +- `src.multi_agent_conductor.update_task_status` (line 166) +- `src.multi_agent_conductor.approve_task` (line 158) +- `src.multi_agent_conductor.update_usage` (line 137) +- `src.multi_agent_conductor.confirm_execution` (line 367) +- `src.multi_agent_conductor.worker_comms_callback` (line 574) +- `src.multi_agent_conductor.confirm_spawn` (line 391) +- `src.multi_agent_conductor._count_tokens` (line 492) +- `src.multi_agent_conductor.kill_worker` (line 174) +- `src.multi_agent_conductor._push_state` (line 192) +- `src.multi_agent_conductor.parse_json_tickets` (line 208) +- `src.multi_agent_conductor.clutch_callback` (line 558) +- `src.multi_agent_conductor.run_worker_lifecycle` (line 433) +- `src.multi_agent_conductor.spawn` (line 64) +- `src.multi_agent_conductor.run` (line 240) +- `src.multi_agent_conductor.stream_callback` (line 569) +- `src.multi_agent_conductor._queue_put` (line 362) + +### `src\openai_compatible.py` (5 consumers) + +- `src.openai_compatible._send_streaming` (line 133) +- `src.openai_compatible._classify_openai_compatible_error` (line 58) +- `src.openai_compatible._send_blocking` (line 116) +- `src.openai_compatible._to_typed_tool_call` (line 43) +- `src.openai_compatible.send_openai_compatible` (line 80) + +### `src\orchestrator_pm.py` (1 consumer) + +- `src.orchestrator_pm.generate_tracks` (line 58) + +### `src\outline_tool.py` (2 consumers) + +- `src.outline_tool.outline` (line 44) +- `src.outline_tool.get_outline` (line 127) + +### `src\patch_modal.py` (2 consumers) + +- `src.patch_modal.apply_patch` (line 57) +- `src.patch_modal.request_patch_approval` (line 19) + +### `src\paths.py` (5 consumers) + +- `src.paths.get_archive_dir` (line 250) +- `src.paths.get_tracks_dir` (line 242) +- `src.paths.get_track_state_dir` (line 246) +- `src.paths.get_conductor_dir` (line 271) +- `src.paths._resolve_path` (line 104) + +### `src\performance_monitor.py` (8 consumers) + +- `src.performance_monitor.get_history` (line 269) +- `src.performance_monitor.scope` (line 281) +- `src.performance_monitor._add_to_history` (line 140) +- `src.performance_monitor.start_component` (line 207) +- `src.performance_monitor._get_avg` (line 155) +- `src.performance_monitor.end_component` (line 216) +- `src.performance_monitor.__exit__` (line 77) +- `src.performance_monitor.__init__` (line 71) + +### `src\personas.py` (5 consumers) + +- `src.personas.save_persona` (line 49) +- `src.personas._save_file` (line 98) +- `src.personas.get_persona_scope` (line 61) +- `src.personas._get_path` (line 16) +- `src.personas.delete_persona` (line 76) + +### `src\presets.py` (4 consumers) + +- `src.presets.get_preset_scope` (line 84) +- `src.presets._save_file` (line 117) +- `src.presets.delete_preset` (line 70) +- `src.presets.save_preset` (line 52) + +### `src\project_manager.py` (16 consumers) + +- `src.project_manager.save_project` (line 229) +- `src.project_manager.save_track_history` (line 329) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.branch_discussion` (line 453) +- `src.project_manager.load_track_state` (line 300) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.clean_nones` (line 220) +- `src.project_manager.promote_take` (line 471) +- `src.project_manager.save_track_state` (line 289) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.parse_ts` (line 42) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.get_git_commit` (line 104) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.load_track_history` (line 314) + +### `src\provider_state.py` (1 consumer) + +- `src.provider_state.get_history` (line 57) + +### `src\qwen_adapter.py` (2 consumers) + +- `src.qwen_adapter.classify_dashscope_error` (line 26) +- `src.qwen_adapter.build_dashscope_tools` (line 13) + +### `src\rag_engine.py` (18 consumers) + +- `src.rag_engine.embed` (line 72) +- `src.rag_engine.__init__` (line 69) +- `src.rag_engine._check_existing_index_result` (line 260) +- `src.rag_engine._chunk_code_result` (line 226) +- `src.rag_engine.embed` (line 64) +- `src.rag_engine._parse_search_response_result` (line 88) +- `src.rag_engine.embed` (line 56) +- `src.rag_engine.index_file` (line 289) +- `src.rag_engine.delete_documents` (line 374) +- `src.rag_engine.__init__` (line 105) +- `src.rag_engine.add_documents` (line 196) +- `src.rag_engine._get_file_mtime_result` (line 250) +- `src.rag_engine.delete_documents_by_path` (line 390) +- `src.rag_engine.search` (line 349) +- `src.rag_engine._chunk_text` (line 210) +- `src.rag_engine._read_file_content_result` (line 278) +- `src.rag_engine.__init__` (line 60) +- `src.rag_engine._search_mcp` (line 339) + +### `src\session_logger.py` (7 consumers) + +- `src.session_logger.log_tool_call` (line 166) +- `src.session_logger.open_session` (line 60) +- `src.session_logger.log_comms` (line 152) +- `src.session_logger.reset_session` (line 135) +- `src.session_logger.log_api_hook` (line 140) +- `src.session_logger.log_tool_output` (line 211) +- `src.session_logger.log_cli_call` (line 234) + +### `src\shell_runner.py` (1 consumer) + +- `src.shell_runner.run_powershell` (line 58) + +### `src\startup_profiler.py` (2 consumers) + +- `src.startup_profiler.phase` (line 49) +- `src.startup_profiler._log_phase_output` (line 17) + +### `src\summarize.py` (7 consumers) + +- `src.summarize.build_summary_markdown` (line 212) +- `src.summarize.summarise_file` (line 159) +- `src.summarize._summarise_markdown` (line 105) +- `src.summarize._summarise_python` (line 31) +- `src.summarize._summarise_toml` (line 78) +- `src.summarize._summarise_generic` (line 121) +- `src.summarize.summarise_items` (line 194) + +### `src\summary_cache.py` (4 consumers) + +- `src.summary_cache.set_summary` (line 70) +- `src.summary_cache.get_file_hash` (line 10) +- `src.summary_cache.__init__` (line 22) +- `src.summary_cache.get_summary` (line 57) + +### `src\synthesis_formatter.py` (1 consumer) + +- `src.synthesis_formatter.format_takes_diff` (line 1) + +### `src\theme_2.py` (17 consumers) + +- `src.theme_2.set_gamma` (line 93) +- `src.theme_2.get_brightness` (line 87) +- `src.theme_2.get_gamma` (line 89) +- `src.theme_2.get_contrast` (line 88) +- `src.theme_2.set_contrast` (line 92) +- `src.theme_2.load_from_config` (line 320) +- `src.theme_2.get_role_tint` (line 204) +- `src.theme_2.set_brightness` (line 91) +- `src.theme_2.get_color` (line 153) +- `src.theme_2.reset_tone_mapping` (line 95) +- `src.theme_2.apply_syntax_palette` (line 359) +- `src.theme_2.apply` (line 213) +- `src.theme_2.render_post_fx` (line 401) +- `src.theme_2.save_to_config` (line 302) +- `src.theme_2._get_tm` (line 84) +- `src.theme_2._tone_map` (line 100) +- `src.theme_2.get_syntax_palette_for_theme` (line 351) + +### `src\theme_models.py` (6 consumers) + +- `src.theme_models.from_dict` (line 145) +- `src.theme_models.from_dict` (line 100) +- `src.theme_models.with_scope` (line 127) +- `src.theme_models.load_themes_from_toml` (line 200) +- `src.theme_models.load_themes_from_dir` (line 181) +- `src.theme_models.load_theme_file` (line 166) + +### `src\theme_nerv_fx.py` (1 consumer) + +- `src.theme_nerv_fx.update` (line 79) + +### `src\thinking_parser.py` (3 consumers) + +- `src.thinking_parser.parse_thinking_trace` (line 8) +- `src.thinking_parser.extract_colon_blocks` (line 41) +- `src.thinking_parser.extract_tags` (line 22) + +### `src\tool_presets.py` (6 consumers) + +- `src.tool_presets.delete_bias_profile` (line 129) +- `src.tool_presets._get_path` (line 15) +- `src.tool_presets.save_bias_profile` (line 118) +- `src.tool_presets.delete_preset` (line 81) +- `src.tool_presets._write_raw` (line 37) +- `src.tool_presets.save_preset` (line 70) + +### `src\vendor_capabilities.py` (2 consumers) + +- `src.vendor_capabilities.list_models_for_vendor` (line 44) +- `src.vendor_capabilities.get_capabilities` (line 37) + +### `src\warmup.py` (7 consumers) + +- `src.warmup.submit` (line 92) +- `src.warmup._record_failure` (line 231) +- `src.warmup._warmup_one` (line 170) +- `src.warmup._record_success` (line 192) +- `src.warmup._log_stderr` (line 314) +- `src.warmup._fire_callback` (line 328) +- `src.warmup._log_canary` (line 266) + +### `src\workspace_manager.py` (4 consumers) + +- `src.workspace_manager.delete_profile` (line 62) +- `src.workspace_manager._save_file` (line 81) +- `src.workspace_manager._get_path` (line 20) +- `src.workspace_manager.save_profile` (line 50) + +## Field access matrix + +| consumer | _cb_load_workspace_profile | _dirty | _flags | _id | _load_file | _make_request | _mma_status | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_history_adds | _pending_history_adds_lock | _read_beads | _redo_stack | _report_worker_error | _size | _token_history | _undo_stack | _write_beads | active_discussion | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `aggregate_cross_audit_findings` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `approve_mma_ticket` | . | . | . | . | . | 1 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `update_auto_whitelist_status` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run_tier4_analysis` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_flush_to_project_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `classify_memory_dim` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `__init__` | . | . | 1 | 1 | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | . | . | +| `create_bead` | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | 1 | . | +| `fuzzy_match` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `set_gamma` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `update_task_status` | . | 1 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `estimate_call_frequency` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `walk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `detect_access_pattern` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_get_app_attr` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_handle_mma_state_update` | 1 | . | . | . | . | . | 2 | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_list_deepseek_models` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `__init__` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | . | . | . | . | . | . | . | 1 | 1 | 1 | 4 | 4 | . | . | . | . | 1 | . | . | . | +| `approve_task` | . | 1 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ui_screenshot_paths` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `__init__` | . | . | 1 | 1 | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | . | . | +| `_extract_gemini_thoughts_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `get_brightness` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `undo` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | 2 | . | . | +| `_drain_normalize_errors` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_rename_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | +| `get_file_slice` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `tab_bar` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `log_tool_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `current_model` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `embed` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `get_preset_scope` | . | . | . | . | 2 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `file_origin_memory_dim` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `__init__` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `get_gamma` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `style_var` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_file` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `is_absolute_with_drive` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_topological_sort_tickets_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | +| `ui_file_paths` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `rag_emb_provider` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `synthesize_aggregate_profile` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_check_existing_index_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | + +_... 33 more fields_ + +## Access pattern + +**Dominant pattern:** whole_struct +**Evidence count:** 50 + +**Per-function pattern distribution:** + +- `whole_struct`: 34 functions (68%) +- `mixed`: 10 functions (20%) +- `field_by_field`: 6 functions (12%) + +## SSDL Sketch for `Metadata` + +``` +[Q:Metadata entry-point] -> [Q:PCG lookup] + -> [1: from_dict] [B:check] (branches=0) + -> [2: aggregate_cross_audit_findings] [B:is None?] (branches=2) [N:safe] + -> [3: approve_mma_ticket] [B:check] (branches=1) + -> [4: update_auto_whitelist_status] [B:check] (branches=18) + -> [5: from_dict] [B:check] (branches=0) + -> [6: _send_gemini] [B:is None?] (branches=75) [N:safe] + -> [7: from_dict] [B:check] (branches=0) + -> [8: save_project] [B:is None?] (branches=7) [N:safe] + -> [9: run_tier4_analysis] [B:check] (branches=0) + -> [10: _flush_to_project_result] [B:check] (branches=2) + -> [11: classify_memory_dim] [B:check] (branches=2) + -> [12: __init__] [B:check] (branches=2) + -> [13: create_bead] [B:check] (branches=0) + -> [14: fuzzy_match] [B:check] (branches=2) + -> [15: set_gamma] [B:check] (branches=0) + -> [16: update_task_status] [B:check] (branches=0) + -> [17: estimate_call_frequency] [B:check] (branches=2) + -> [18: walk] [B:check] (branches=23) + -> [19: detect_access_pattern] [B:is None?] (branches=5) [N:safe] + -> [20: _get_app_attr] [B:check] (branches=3) + -> [21: _send_llama_native] [B:check] (branches=12) + -> [22: _handle_mma_state_update] [B:is None?] (branches=27) [N:safe] + -> [23: _list_deepseek_models] [B:check] (branches=0) + -> [24: __init__] [B:check] (branches=0) + -> [25: _on_comms_entry] [B:check] (branches=32) + -> [26: approve_task] [B:check] (branches=0) + -> [27: ui_screenshot_paths] [B:check] (branches=0) + -> [28: __init__] [B:check] (branches=2) + -> [29: _extract_gemini_thoughts_result] [B:is None?] (branches=9) [N:safe] + -> [30: get_brightness] [B:check] (branches=0) + -> [31: undo] [B:check] (branches=1) + -> [32: _drain_normalize_errors] [B:is None?] (branches=6) [N:safe] + -> [33: _rename_discussion] [B:check] (branches=3) + -> [34: get_file_slice] [B:check] (branches=1) + -> [35: tab_bar] [B:check] (branches=0) + -> [36: log_tool_call] [B:is None?] (branches=8) [N:safe] + -> [37: current_model] [B:check] (branches=0) + -> [38: embed] [B:check] (branches=0) + -> [39: get_preset_scope] [B:check] (branches=3) + -> [40: file_origin_memory_dim] [B:check] (branches=3) + -> [41: __init__] [B:check] (branches=0) + -> [42: get_gamma] [B:check] (branches=0) + -> [43: style_var] [B:check] (branches=0) + -> [44: _save_file] [B:check] (branches=3) + -> [45: is_absolute_with_drive] [B:check] (branches=2) + -> [46: _topological_sort_tickets_result] [B:check] (branches=2) + -> [47: ui_file_paths] [B:check] (branches=0) + -> [48: rag_emb_provider] [B:check] (branches=0) + -> [49: synthesize_aggregate_profile] [B:is None?] (branches=4) [N:safe] + -> [50: _check_existing_index_result] [B:check] (branches=6) + -> [51: read_input_json] [B:check] (branches=5) + -> [52: walk] [B:check] (branches=23) + -> [53: is_session_whitelisted] [B:is None?] (branches=1) [N:safe] + -> [54: py_update_definition_result] [B:check] (branches=6) + -> [55: render_unindented] [B:check] (branches=0) + -> [56: set_summary] [B:check] (branches=2) + -> [57: classify_dashscope_error] [B:check] (branches=5) + -> [58: _cb_save_view_preset] [B:check] (branches=2) + -> [59: delete_context_preset] [B:check] (branches=1) + -> [60: style_color] [B:check] (branches=0) + -> [61: _handle_set_tool_log_dirty] [B:check] (branches=0) + -> [62: read_file] [B:check] (branches=1) + -> [63: _api_get_session] [B:check] (branches=1) + -> [64: get_contrast] [B:check] (branches=0) + -> [65: launch_diff] [B:check] (branches=3) + -> [66: get_archive_dir] [B:check] (branches=0) + -> [67: from_dict] [B:check] (branches=4) + -> [68: _classify_minimax_error] [B:is None?] (branches=21) [N:safe] + -> [69: _chunk_code_result] [B:check] (branches=4) + -> [70: _set_rag_status] [B:check] (branches=1) + -> [71: _resolve_font_path_result] [B:check] (branches=7) + -> [72: _add_bleed_derived] [B:check] (branches=0) + -> [73: __init__] [B:is None?] (branches=0) [N:safe] + -> [74: _diag_layout_state_ini_text_result] [B:check] (branches=3) + -> [75: _ast_update_definition] [B:check] (branches=0) + -> [76: mutate_dag] [B:is None?] (branches=8) [N:safe] + -> [77: py_get_symbol_info_result] [B:check] (branches=5) + -> [78: cb_load_prior_log] [B:is None?] (branches=13) [N:safe] + -> [79: embed] [B:check] (branches=0) + -> [80: from_dict] [B:check] (branches=0) + -> [81: save_track_history] [B:check] (branches=1) + -> [82: set_current_tier] [B:check] (branches=0) + -> [83: _send_cli_round_result] [B:check] (branches=3) + -> [84: _save_fallback_project_result] [B:check] (branches=3) + -> [85: _require_warmed] [B:is None?] (branches=1) [N:safe] + -> [86: load_mcp_config] [B:check] (branches=4) + -> [87: _extract_dashscope_tool_calls] [B:check] (branches=4) + -> [88: fetch_url_result] [B:check] (branches=8) + -> [89: _strip_cache_controls] [B:check] (branches=4) + -> [90: _handle_clear_summary_cache] [B:check] (branches=0) + -> [91: _tier_stream_scroll_sync_result] [B:check] (branches=3) + -> [92: delete_profile] [B:check] (branches=2) + -> [93: _update_gcli_adapter] [B:check] (branches=1) + -> [94: _estimate_prompt_tokens] [B:check] (branches=2) + -> [95: handle_starttag] [B:check] (branches=6) + -> [96: set_contrast] [B:check] (branches=0) + -> [97: _delete_discussion] [B:check] (branches=3) + -> [98: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [99: open_session] [B:is None?] (branches=5) [N:safe] + -> [100: post_project] [B:check] (branches=0) + -> [101: compute_real_type_alias_coverage] [B:check] (branches=6) + -> [102: load_all] [B:check] (branches=3) + -> [103: submit] [B:check] (branches=4) + -> [104: _render_ast_inspector_file_content_result] [B:check] (branches=2) + -> [105: list_models] [B:check] (branches=8) + -> [106: _run_script] [B:is None?] (branches=3) [N:safe] + -> [107: _strip_private_keys] [B:check] (branches=0) + -> [108: load_from_config] [B:check] (branches=1) + -> [109: _handle_click] [B:check] (branches=9) + -> [110: _record_failure] [B:is None?] (branches=14) [N:safe] + -> [111: _parse_search_response_result] [B:check] (branches=5) + -> [112: __init__] [B:check] (branches=2) + -> [113: _toggle_window] [B:check] (branches=2) + -> [114: embed] [B:check] (branches=0) + -> [115: ts_cpp_update_definition] [B:check] (branches=1) + -> [116: ts_cpp_get_signature] [B:check] (branches=1) + -> [117: __init__] [B:check] (branches=0) + -> [118: ts_c_get_code_outline_result] [B:check] (branches=5) + -> [119: _dashscope_exception_from_response] [B:check] (branches=0) + -> [120: update_usage] [B:check] (branches=2) + -> [121: set_agent_tools] [B:check] (branches=0) + -> [122: is_hot_cold_split] [B:check] (branches=1) + -> [123: group_files_by_dir] [B:check] (branches=3) + -> [124: run_tier4_patch_generation] [B:check] (branches=0) + -> [125: _symbol_resolution_result] [B:check] (branches=4) + -> [126: set_bias_profile] [B:check] (branches=2) + -> [127: _build_chunked_context_blocks] [B:check] (branches=2) + -> [128: _normalize_path] [B:check] (branches=0) + -> [129: async_dispatch] [B:check] (branches=2) + -> [130: run_tier4_patch_callback] [B:check] (branches=0) + -> [131: generate_tracks] [B:check] (branches=11) + -> [132: _close_palette] [B:check] (branches=0) + -> [133: _normalize_nested_list_endings] [B:check] (branches=6) + -> [134: list_directory_result] [B:check] (branches=9) + -> [135: __init__] [B:check] (branches=2) + -> [136: current_provider] [B:check] (branches=0) + -> [137: map_finding_to_aggregates] [B:is None?] (branches=1) [N:safe] + -> [138: py_get_imports] [B:check] (branches=1) + -> [139: launch_editor] [B:check] (branches=3) + -> [140: compute_file_stats] [B:check] (branches=6) + -> [141: render_discussion_entry_read_mode] [B:check] (branches=18) + -> [142: search_files] [B:check] (branches=1) + -> [143: P3_pass] [B:check] (branches=10) + -> [144: ts_c_get_signature_result] [B:check] (branches=5) + -> [145: render_organization_deductions] [B:check] (branches=19) + -> [146: py_get_var_declaration_result] [B:check] (branches=8) + -> [147: delete_bias_profile] [B:check] (branches=2) + -> [148: _pre_dispatch] [B:check] (branches=8) + -> [149: read_file_result] [B:check] (branches=6) + -> [150: from_dict] [B:check] (branches=0) + -> [151: render_path_field] [B:check] (branches=5) + -> [152: ts_cpp_get_signature_result] [B:check] (branches=5) + -> [153: derive_code_path] [B:check] (branches=1) + -> [154: from_dict] [B:check] (branches=0) + -> [155: run_powershell] [B:check] (branches=21) + -> [156: _on_ai_stream] [B:is None?] (branches=5) [N:safe] + -> [157: aggregate_findings] [B:check] (branches=9) + -> [158: _send_minimax] [B:check] (branches=11) + -> [159: build_summary_markdown] [B:check] (branches=2) + -> [160: _normalize_bullet_delimiters] [B:check] (branches=0) + -> [161: _api_post_gui] [B:check] (branches=0) + -> [162: delete_preset] [B:check] (branches=3) + -> [163: _handle_hide_patch_modal] [B:check] (branches=0) + -> [164: ui_file_paths] [B:check] (branches=0) + -> [165: _api_confirm_action] [B:is None?] (branches=4) [N:safe] + -> [166: py_get_symbol_info] [B:check] (branches=1) + -> [167: analyze_consumer_pattern] [B:check] (branches=3) + -> [168: _cb_load_track_result] [B:check] (branches=6) + -> [169: py_get_hierarchy] [B:check] (branches=1) + -> [170: from_dict] [B:check] (branches=0) + -> [171: delete_preset] [B:check] (branches=2) + -> [172: _warmup_one] [B:is None?] (branches=7) [N:safe] + -> [173: truncate_entries] [B:check] (branches=4) + -> [174: mutate_mma_dag] [B:check] (branches=1) + -> [175: get_tool_spec] [B:check] (branches=1) + -> [176: build_discussion_text] [B:check] (branches=1) + -> [177: save_preset] [B:check] (branches=3) + -> [178: py_set_signature_result] [B:check] (branches=7) + -> [179: post_gui] [B:check] (branches=1) + -> [180: flat_config] [B:check] (branches=2) + -> [181: get_history] [B:check] (branches=3) + -> [182: menu] [B:check] (branches=0) + -> [183: _send_qwen] [B:check] (branches=9) + -> [184: render_palette_modal] [B:check] (branches=22) + -> [185: __init__] [B:check] (branches=0) + -> [186: create_slice] [B:check] (branches=0) + -> [187: _get_path] [B:check] (branches=3) + -> [188: get_symbol_definition] [B:check] (branches=2) + -> [189: _render_code_block] [B:is None?] (branches=11) [N:safe] + -> [190: get_node_status] [B:check] (branches=1) + -> [191: update_bead] [B:check] (branches=2) + -> [192: index_file] [B:check] (branches=13) + -> [193: py_set_var_declaration] [B:check] (branches=1) + -> [194: _create_discussion] [B:check] (branches=2) + -> [195: _simulate_save_preset] [B:check] (branches=0) + -> [196: delete_session] [B:check] (branches=0) + -> [197: build_markdown] [B:check] (branches=0) + -> [198: confirm_execution] [B:is None?] (branches=3) [N:safe] + -> [199: _handle_mma_step_approval] [B:check] (branches=6) + -> [200: tree_node_ex] [B:check] (branches=0) + -> [201: py_check_syntax_result] [B:check] (branches=7) + -> [202: load_frequency_overrides] [B:check] (branches=4) + -> [203: push] [B:check] (branches=1) + -> [204: mma_status] [B:check] (branches=0) + -> [205: _cb_save_workspace_profile] [B:check] (branches=2) + -> [206: _safe_controller_result] [B:is None?] (branches=4) [N:safe] + -> [207: get_token_stats] [B:check] (branches=3) + -> [208: _on_warmup_complete_callback] [B:is None?] (branches=5) [N:safe] + -> [209: delete_documents] [B:check] (branches=2) + -> [210: _trim_anthropic_history] [B:check] (branches=13) + -> [211: _compute_score] [B:check] (branches=3) + -> [212: ts_c_get_skeleton] [B:check] (branches=1) + -> [213: topological_sort] [B:check] (branches=3) + -> [214: save_persona] [B:check] (branches=1) + -> [215: _spawn_worker] [B:check] (branches=3) + -> [216: render_code] [B:check] (branches=0) + -> [217: _extract_tool_name] [B:check] (branches=13) + -> [218: __init__] [B:is None?] (branches=0) [N:safe] + -> [219: _make_serializable] [B:check] (branches=5) + -> [220: worker_comms_callback] [B:check] (branches=7) + -> [221: add_field_access] [B:check] (branches=0) + -> [222: register] [B:check] (branches=2) + -> [223: branch_discussion] [B:check] (branches=3) + -> [224: summarise_file] [B:check] (branches=7) + -> [225: mark_blocked] [B:check] (branches=0) + -> [226: py_set_var_declaration_result] [B:check] (branches=8) + -> [227: __init__] [B:check] (branches=2) + -> [228: approve_ticket] [B:check] (branches=4) + -> [229: run_discussion_compression] [B:check] (branches=14) + -> [230: _is_subsequence] [B:check] (branches=3) + -> [231: __init__] [B:check] (branches=4) + -> [232: __init__] [B:is None?] (branches=0) [N:safe] + -> [233: get_tracks_dir] [B:check] (branches=0) + -> [234: get_role_tint] [B:check] (branches=0) + -> [235: _do_project_switch] [B:check] (branches=9) + -> [236: apply_patch] [B:check] (branches=1) + -> [237: parse_thinking_trace] [B:check] (branches=1) + -> [238: _handle_show_track_proposal] [B:check] (branches=0) + -> [239: load_context_preset] [B:check] (branches=3) + -> [240: _run_tier4_patch_callback_result] [B:check] (branches=6) + -> [241: detect_nil_check_pattern] [B:is None?] (branches=11) [N:safe] + -> [242: py_get_imports_result] [B:check] (branches=13) + -> [243: render_unindented] [B:check] (branches=0) + -> [244: _set_tool_preset_result] [B:check] (branches=7) + -> [245: _handle_set_value] [B:check] (branches=6) + -> [246: count_branches_in_function] [B:is None?] (branches=9) [N:safe] + -> [247: save_bias_profile] [B:check] (branches=1) + -> [248: parse_symbols] [B:check] (branches=0) + -> [249: select_tab] [B:check] (branches=0) + -> [250: _run_tier4_analysis_result] [B:check] (branches=5) + -> [251: confirm_spawn] [B:is None?] (branches=6) [N:safe] + -> [252: child] [B:check] (branches=0) + -> [253: from_dict] [B:check] (branches=0) + -> [254: resolve_paths] [B:check] (branches=4) + -> [255: inject_context] [B:check] (branches=3) + -> [256: ts_c_get_code_outline] [B:check] (branches=1) + -> [257: py_get_definition] [B:check] (branches=1) + -> [258: set_file_slice] [B:check] (branches=1) + -> [259: get] [B:check] (branches=0) + -> [260: search_files_result] [B:check] (branches=9) + -> [261: _extract_minimax_reasoning] [B:check] (branches=5) + -> [262: py_update_definition] [B:check] (branches=1) + -> [263: find_in_scope] [B:check] (branches=10) + -> [264: _atom] [B:check] (branches=1) + -> [265: register] [B:check] (branches=0) + -> [266: handle_data] [B:check] (branches=2) + -> [267: set_brightness] [B:check] (branches=0) + -> [268: from_dict] [B:check] (branches=0) + -> [269: __init__] [B:check] (branches=0) + -> [270: _cb_start_track] [B:check] (branches=13) + -> [271: _resolve_filepath] [B:check] (branches=1) + -> [272: _save_file] [B:check] (branches=1) + -> [273: _append_tool_log] [B:check] (branches=6) + -> [274: ts_cpp_get_code_outline_result] [B:check] (branches=5) + -> [275: get_line_color] [B:check] (branches=3) + -> [276: _cb_delete_persona] [B:check] (branches=0) + -> [277: save_preset] [B:check] (branches=1) + -> [278: _dashscope_call] [B:check] (branches=5) + -> [279: _test_callback_func_write_to_file] [B:check] (branches=1) + -> [280: create_temp_modified_file] [B:check] (branches=1) + -> [281: __getattr__] [B:check] (branches=0) + -> [282: emit] [B:check] (branches=2) + -> [283: __init__] [B:check] (branches=2) + -> [284: _get_symbol_node] [B:check] (branches=12) + -> [285: get_file_hash] [B:check] (branches=0) + -> [286: _apply_preset] [B:check] (branches=4) + -> [287: _resolve_log_ref] [B:is None?] (branches=6) [N:safe] + -> [288: _send_streaming] [B:is None?] (branches=19) [N:safe] + -> [289: _create_gemini_cache_result] [B:check] (branches=3) + -> [290: _list_models_for_provider_result] [B:check] (branches=2) + -> [291: _cb_ticket_retry] [B:check] (branches=2) + -> [292: load_track_state] [B:check] (branches=4) + -> [293: walk] [B:check] (branches=23) + -> [294: _count_gaps] [B:check] (branches=5) + -> [295: web_search_result] [B:check] (branches=5) + -> [296: build_tier3_context] [B:check] (branches=50) + -> [297: py_get_code_outline] [B:check] (branches=1) + -> [298: _handle_custom_callback] [B:check] (branches=4) + -> [299: _repair_minimax_history] [B:check] (branches=10) + -> [300: send] [B:check] (branches=30) + -> [301: get_color] [B:check] (branches=7) + -> [302: parse_diff] [B:is None?] (branches=20) [N:safe] + -> [303: __getitem__] [B:is None?] (branches=4) [N:safe] + -> [304: kill_worker] [B:check] (branches=1) + -> [305: py_get_signature] [B:check] (branches=1) + -> [306: build_pcg] [B:check] (branches=12) + -> [307: _handle_set_mma_status] [B:check] (branches=0) + -> [308: _parse_float_result] [B:check] (branches=2) + -> [309: py_get_docstring] [B:check] (branches=1) + -> [310: kill_mma_worker] [B:check] (branches=1) + -> [311: _classify_anthropic_error] [B:check] (branches=15) + -> [312: resolve_pending_action] [B:check] (branches=6) + -> [313: build_diff_command] [B:check] (branches=0) + -> [314: __init__] [B:check] (branches=2) + -> [315: _record_startup_timeline_error] [B:check] (branches=1) + -> [316: add_documents] [B:check] (branches=2) + -> [317: jump_to_undo] [B:check] (branches=3) + -> [318: derive_code_path_result] [B:check] (branches=34) + -> [319: _on_api_event] [B:check] (branches=2) + -> [320: default_project] [B:check] (branches=0) + -> [321: get_file_slice_result] [B:check] (branches=5) + -> [322: _get_file_mtime_result] [B:check] (branches=2) + -> [323: _api_delete_session] [B:check] (branches=2) + -> [324: render_ssdl_rollup] [B:check] (branches=5) + -> [325: reset_tone_mapping] [B:check] (branches=2) + -> [326: _should_cache_gemini_result] [B:is None?] (branches=5) [N:safe] + -> [327: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [328: _is_contiguous] [B:check] (branches=0) + -> [329: _record_success] [B:is None?] (branches=14) [N:safe] + -> [330: _set_app_attr] [B:check] (branches=2) + -> [331: _handle_clear_ask] [B:check] (branches=1) + -> [332: rag_mcp_server] [B:check] (branches=1) + -> [333: set_base_system_prompt] [B:check] (branches=0) + -> [334: _set_minimax_provider_result] [B:check] (branches=2) + -> [335: drag] [B:check] (branches=0) + -> [336: _fetch_models] [B:check] (branches=11) + -> [337: _count_gemini_tokens_for_stats_result] [B:is None?] (branches=4) [N:safe] + -> [338: _cb_kill_ticket] [B:check] (branches=3) + -> [339: _count_tokens] [B:check] (branches=0) + -> [340: _log_stderr] [B:check] (branches=2) + -> [341: _ticket_id_max_int_result] [B:check] (branches=2) + -> [342: run_with_tool_loop] [B:is None?] (branches=23) [N:safe] + -> [343: get_text_value] [B:is None?] (branches=0) [N:safe] + -> [344: set_project_context_marker] [B:check] (branches=0) + -> [345: from_dict] [B:is None?] (branches=2) [N:safe] + -> [346: get_targeted_view] [B:check] (branches=56) + -> [347: render] [B:check] (branches=0) + -> [348: _split_row] [B:check] (branches=2) + -> [349: _all_function_refs] [B:check] (branches=2) + -> [350: update] [B:check] (branches=0) + -> [351: _get_app_attr] [B:check] (branches=3) + -> [352: delete_preset] [B:check] (branches=2) + -> [353: build_markdown_no_history] [B:check] (branches=0) + -> [354: edit_file_result] [B:check] (branches=10) + -> [355: current_model] [B:check] (branches=0) + -> [356: confirm_action] [B:check] (branches=0) + -> [357: _write_beads] [B:check] (branches=0) + -> [358: outline] [B:check] (branches=26) + -> [359: _summarise_markdown] [B:check] (branches=3) + -> [360: _test_callback_func_write_to_file] [B:check] (branches=1) + -> [361: parse_hunk_header] [B:check] (branches=2) + -> [362: _cb_ticket_skip] [B:check] (branches=2) + -> [363: get_skeleton] [B:check] (branches=27) + -> [364: _ast_get_definition] [B:check] (branches=0) + -> [365: _api_get_key] [B:check] (branches=3) + -> [366: delete_documents_by_path] [B:check] (branches=3) + -> [367: _repair_anthropic_history] [B:check] (branches=6) + -> [368: list_models_for_vendor] [B:check] (branches=1) + -> [369: resolve_slice] [B:check] (branches=18) + -> [370: render] [B:check] (branches=0) + -> [371: _handle_drag] [B:check] (branches=1) + -> [372: search] [B:check] (branches=8) + -> [373: _on_open_link] [B:check] (branches=5) + -> [374: estimate_cost] [B:check] (branches=3) + -> [375: py_get_code_outline_result] [B:check] (branches=6) + -> [376: from_dict] [B:check] (branches=0) + -> [377: scope] [B:check] (branches=0) + -> [378: _rag_search_result] [B:check] (branches=5) + -> [379: __getattr__] [B:check] (branches=2) + -> [380: log_comms] [B:is None?] (branches=3) [N:safe] + -> [381: compute_effective_codepaths] [B:check] (branches=2) + -> [382: dominant_pattern] [B:check] (branches=2) + -> [383: get_track_state_dir] [B:check] (branches=0) + -> [384: configure] [B:is None?] (branches=7) [N:safe] + -> [385: apply_syntax_palette] [B:is None?] (branches=2) [N:safe] + -> [386: phase] [B:check] (branches=3) + -> [387: _deserialize_active_track_result] [B:check] (branches=3) + -> [388: __init__] [B:check] (branches=0) + -> [389: _chunk_text] [B:check] (branches=3) + -> [390: deep_search] [B:check] (branches=7) + -> [391: rag_source] [B:check] (branches=0) + -> [392: parse_tables] [B:check] (branches=7) + -> [393: _load_fonts_main_result] [B:check] (branches=3) + -> [394: right_click] [B:check] (branches=0) + -> [395: build_discussion_section] [B:check] (branches=2) + -> [396: _on_warmup_complete_callback_result] [B:check] (branches=6) + -> [397: start_services] [B:check] (branches=0) + -> [398: spawn_mma_worker] [B:check] (branches=1) + -> [399: P2_pass] [B:is None?] (branches=6) [N:safe] + -> [400: window] [B:check] (branches=0) + -> [401: web_search] [B:check] (branches=1) + -> [402: get] [B:check] (branches=2) + -> [403: detect_frequency_from_entry_point] [B:check] (branches=6) + -> [404: _toggle_attr] [B:check] (branches=2) + -> [405: handle_starttag] [B:check] (branches=6) + -> [406: render_thinking_trace] [B:check] (branches=12) + -> [407: __init__] [B:check] (branches=0) + -> [408: click] [B:check] (branches=0) + -> [409: generate_tickets] [B:check] (branches=12) + -> [410: __getattr__] [B:check] (branches=0) + -> [411: _handle_select_list_item] [B:check] (branches=2) + -> [412: from_dict] [B:check] (branches=4) + -> [413: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [414: reset_session] [B:check] (branches=0) + -> [415: _save_file] [B:check] (branches=1) + -> [416: render_ssdl_sketch] [B:check] (branches=4) + -> [417: get_curated_view] [B:check] (branches=24) + -> [418: _write_raw] [B:check] (branches=1) + -> [419: deep_search] [B:check] (branches=7) + -> [420: _has_app_attr] [B:check] (branches=3) + -> [421: build_screenshots_section] [B:check] (branches=6) + -> [422: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [423: id] [B:check] (branches=0) + -> [424: _normalize_list_continuations] [B:check] (branches=9) + -> [425: __init__] [B:check] (branches=0) + -> [426: _cb_apply_view_preset] [B:check] (branches=1) + -> [427: redo] [B:check] (branches=1) + -> [428: compute_result_coverage] [B:check] (branches=2) + -> [429: __init__] [B:check] (branches=1) + -> [430: _make_request] [B:check] (branches=8) + -> [431: _handle_refresh_from_project] [B:check] (branches=0) + -> [432: _set_context_files] [B:check] (branches=0) + -> [433: apply] [B:check] (branches=10) + -> [434: _handle_ask] [B:check] (branches=0) + -> [435: set_session_start_time] [B:check] (branches=2) + -> [436: _resolve_aliases] [B:is None?] (branches=7) [N:safe] + -> [437: _content_block_to_dict] [B:check] (branches=5) + -> [438: entry_to_str] [B:check] (branches=3) + -> [439: _is_table_at] [B:check] (branches=2) + -> [440: _list_gemini_models_result] [B:check] (branches=7) + -> [441: run_audit] [B:check] (branches=4) + -> [442: render_text_viewer] [B:check] (branches=3) + -> [443: get_tree_result] [B:check] (branches=13) + -> [444: render_code] [B:check] (branches=0) + -> [445: ts_cpp_get_definition_result] [B:check] (branches=5) + -> [446: get_cached_tree] [B:check] (branches=4) + -> [447: async_dispatch] [B:check] (branches=2) + -> [448: _cb_delete_bias_profile] [B:check] (branches=0) + -> [449: py_get_class_summary_result] [B:check] (branches=10) + -> [450: P1_pass] [B:is None?] (branches=5) [N:safe] + -> [451: log_api_hook] [B:is None?] (branches=3) [N:safe] + -> [452: aggregate_pattern_from_consumers] [B:check] (branches=7) + -> [453: with_scope] [B:check] (branches=0) + -> [454: from_dict] [B:check] (branches=0) + -> [455: get_file_summary] [B:check] (branches=1) + -> [456: tab_item] [B:check] (branches=0) + -> [457: _classify_openai_compatible_error] [B:check] (branches=10) + -> [458: from_dict] [B:check] (branches=0) + -> [459: _on_tool_log] [B:check] (branches=1) + -> [460: get_persona_scope] [B:check] (branches=3) + -> [461: update_definition] [B:check] (branches=42) + -> [462: _cb_load_workspace_profile] [B:check] (branches=3) + -> [463: to_dsl_v2] [B:is None?] (branches=10) [N:safe] + -> [464: wait_for_event] [B:check] (branches=4) + -> [465: _summarise_python] [B:check] (branches=21) + -> [466: compute_decomposition_cost] [B:check] (branches=0) + -> [467: __getattr__] [B:check] (branches=4) + -> [468: py_get_skeleton_result] [B:check] (branches=5) + -> [469: handle_data] [B:check] (branches=2) + -> [470: get_definition] [B:check] (branches=42) + -> [471: __init__] [B:check] (branches=2) + -> [472: _ast_get_signature] [B:check] (branches=0) + -> [473: _get_mtime_safe] [B:is None?] (branches=3) [N:safe] + -> [474: analyze_producer_size] [B:is None?] (branches=21) [N:safe] + -> [475: table] [B:check] (branches=0) + -> [476: get_tree] [B:check] (branches=1) + -> [477: code_path_audit_v2] [B:check] (branches=1) + -> [478: _aggregate_for_fqname] [B:check] (branches=4) + -> [479: clean_nones] [B:is None?] (branches=2) [N:safe] + -> [480: py_set_signature] [B:check] (branches=1) + -> [481: set_custom_system_prompt] [B:check] (branches=0) + -> [482: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [483: __setattr__] [B:check] (branches=3) + -> [484: _clean_nones] [B:is None?] (branches=2) [N:safe] + -> [485: detect_language] [B:check] (branches=8) + -> [486: fetch_url] [B:check] (branches=1) + -> [487: handle_endtag] [B:check] (branches=5) + -> [488: _add_to_history] [B:check] (branches=3) + -> [489: promote_take] [B:check] (branches=4) + -> [490: save_track_state] [B:check] (branches=1) + -> [491: _init_ai_and_hooks] [B:check] (branches=2) + -> [492: py_get_docstring_result] [B:check] (branches=10) + -> [493: get_outline] [B:check] (branches=1) + -> [494: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [495: parse_history_entries] [B:check] (branches=10) + -> [496: from_dict] [B:check] (branches=0) + -> [497: str_to_entry] [B:check] (branches=5) + -> [498: set_file_slice_result] [B:check] (branches=7) + -> [499: request_confirmation] [B:check] (branches=0) + -> [500: compute_real_decomposition_cost] [B:check] (branches=7) + -> [501: _classify_deepseek_error] [B:is None?] (branches=21) [N:safe] + -> [502: _report_worker_error] [B:check] (branches=2) + -> [503: get_conductor_dir] [B:check] (branches=2) + -> [504: put] [B:check] (branches=3) + -> [505: capture_state] [B:check] (branches=0) + -> [506: __init__] [B:check] (branches=0) + -> [507: render_discussion_entry] [B:check] (branches=21) + -> [508: from_dict] [B:check] (branches=0) + -> [509: parse_dsl_v2] [B:check] (branches=17) + -> [510: _handle_ticket_completed] [B:check] (branches=3) + -> [511: _cb_create_track] [B:check] (branches=4) + -> [512: py_check_syntax] [B:check] (branches=1) + -> [513: edit_file] [B:check] (branches=1) + -> [514: _confirm_and_run] [B:check] (branches=12) + -> [515: parse_ts] [B:check] (branches=2) + -> [516: _log_phase_output] [B:check] (branches=2) + -> [517: _set_mcp_config_json_result] [B:check] (branches=2) + -> [518: get_api_key] [B:check] (branches=0) + -> [519: _ast_get_skeleton] [B:check] (branches=0) + -> [520: estimate_struct_size] [B:check] (branches=3) + -> [521: run_all_cross_audit_reads] [B:check] (branches=4) + -> [522: popup_modal] [B:check] (branches=0) + -> [523: mcp_config_json] [B:check] (branches=0) + -> [524: _handle_set_ai_status] [B:check] (branches=0) + -> [525: _handle_mma_stream] [B:check] (branches=4) + -> [526: _ast_get_code_outline] [B:check] (branches=0) + -> [527: get_capabilities] [B:check] (branches=2) + -> [528: set_value] [B:check] (branches=0) + -> [529: kill_worker] [B:check] (branches=4) + -> [530: inject_context] [B:check] (branches=1) + -> [531: node] [B:check] (branches=0) + -> [532: ollama_chat] [B:check] (branches=3) + -> [533: post_api_session] [B:check] (branches=0) + -> [534: dispatch] [B:check] (branches=60) + -> [535: log_tool_output] [B:is None?] (branches=4) [N:safe] + -> [536: _cb_save_bias_profile] [B:check] (branches=0) + -> [537: set_provider] [B:check] (branches=7) + -> [538: add_producer] [B:check] (branches=0) + -> [539: _on_performance_alert] [B:check] (branches=0) + -> [540: get_code_outline] [B:is None?] (branches=8) [N:safe] + -> [541: parse] [B:check] (branches=0) + -> [542: _render_ast_inspector_outline_result] [B:check] (branches=6) + -> [543: __init__] [B:check] (branches=0) + -> [544: _read_file_content_result] [B:check] (branches=3) + -> [545: _start_track_logic_result] [B:check] (branches=10) + -> [546: from_dict] [B:check] (branches=0) + -> [547: __init__] [B:check] (branches=0) + -> [548: reload] [B:check] (branches=4) + -> [549: get_git_diff] [B:check] (branches=1) + -> [550: migrate_from_legacy_config] [B:check] (branches=2) + -> [551: __init__] [B:check] (branches=0) + -> [552: get_summary] [B:check] (branches=2) + -> [553: send] [B:check] (branches=19) + -> [554: get_signature] [B:check] (branches=46) + -> [555: push_event] [B:check] (branches=0) + -> [556: ts_cpp_get_code_outline] [B:check] (branches=1) + -> [557: ts_c_update_definition] [B:check] (branches=1) + -> [558: _handle_refresh_api_metrics] [B:check] (branches=1) + -> [559: _push_state] [B:check] (branches=1) + -> [560: _truncate_tool_output] [B:check] (branches=2) + -> [561: render_tier_stream_panel] [B:is None?] (branches=16) [N:safe] + -> [562: _build_tree] [B:check] (branches=8) + -> [563: get_indicator_state] [B:check] (branches=0) + -> [564: _get_path] [B:check] (branches=3) + -> [565: _on_warmup_complete_for_timeline] [B:check] (branches=0) + -> [566: get_git_commit] [B:check] (branches=2) + -> [567: py_get_signature_result] [B:check] (branches=10) + -> [568: format_discussion] [B:check] (branches=0) + -> [569: set_vendor_quota] [B:check] (branches=0) + -> [570: py_get_skeleton] [B:check] (branches=1) + -> [571: on] [B:check] (branches=1) + -> [572: py_get_var_declaration] [B:check] (branches=1) + -> [573: _switch_project] [B:check] (branches=7) + -> [574: extract_colon_blocks] [B:check] (branches=1) + -> [575: start_component] [B:check] (branches=2) + -> [576: from_dict] [B:check] (branches=0) + -> [577: py_find_usages_result] [B:check] (branches=19) + -> [578: _load_project_from_path_result] [B:check] (branches=2) + -> [579: build_dashscope_tools] [B:check] (branches=2) + -> [580: _execute_tool_calls_concurrently] [B:check] (branches=10) + -> [581: from_dict] [B:check] (branches=0) + -> [582: _save_context_preset_force] [B:check] (branches=2) + -> [583: _repair_deepseek_history] [B:check] (branches=6) + -> [584: _execute] [B:check] (branches=3) + -> [585: mark_manual_block] [B:check] (branches=0) + -> [586: _set_external_editor_default] [B:check] (branches=2) + -> [587: delete_persona] [B:check] (branches=2) + -> [588: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [589: wait_for_project_switch] [B:is None?] (branches=8) [N:safe] + -> [590: parse_json_tickets] [B:check] (branches=5) + -> [591: render_post_fx] [B:check] (branches=0) + -> [592: update_task_status] [B:check] (branches=1) + -> [593: _on_sigint] [B:check] (branches=1) + -> [594: set_tool_preset] [B:check] (branches=2) + -> [595: _send_blocking] [B:check] (branches=4) + -> [596: find_next_increment] [B:check] (branches=3) + -> [597: render_heavy_text] [B:check] (branches=8) + -> [598: __init__] [B:check] (branches=2) + -> [599: clutch_callback] [B:check] (branches=5) + -> [600: __init__] [B:check] (branches=0) + -> [601: restore_state] [B:check] (branches=1) + -> [602: get_value] [B:check] (branches=10) + -> [603: _summarise_toml] [B:check] (branches=8) + -> [604: _start_track_logic] [B:check] (branches=1) + -> [605: _switch_discussion] [B:check] (branches=4) + -> [606: _send_request] [B:check] (branches=2) + -> [607: __init__] [B:check] (branches=2) + -> [608: _handle_right_click] [B:check] (branches=1) + -> [609: _handle_show_patch_modal] [B:check] (branches=0) + -> [610: _offload_entry_payload] [B:check] (branches=10) + -> [611: load_themes_from_toml] [B:check] (branches=10) + -> [612: _cb_delete_view_preset] [B:check] (branches=0) + -> [613: _invalidate_token_estimate] [B:check] (branches=0) + -> [614: get_session] [B:check] (branches=0) + -> [615: _send_grok] [B:check] (branches=14) + -> [616: get_git_diff_result] [B:check] (branches=6) + -> [617: log_message] [B:check] (branches=0) + -> [618: save_to_config] [B:check] (branches=1) + -> [619: _fire_callback] [B:check] (branches=3) + -> [620: _get_avg] [B:check] (branches=3) + -> [621: ts_cpp_update_definition_result] [B:check] (branches=6) + -> [622: rag_mcp_tool] [B:check] (branches=1) + -> [623: ts_c_get_skeleton_result] [B:check] (branches=5) + -> [624: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [625: _cb_delete_workspace_profile] [B:check] (branches=2) + -> [626: _cb_block_ticket] [B:check] (branches=7) + -> [627: _resolve_and_check_result] [B:check] (branches=5) + -> [628: ts_c_get_definition] [B:check] (branches=1) + -> [629: load_memory_dim_overrides] [B:check] (branches=4) + -> [630: _render_window_if_open] [B:check] (branches=4) + -> [631: _parse_tool_args_result] [B:check] (branches=2) + -> [632: ts_c_get_signature] [B:check] (branches=1) + -> [633: end_component] [B:is None?] (branches=8) [N:safe] + -> [634: _has_app_attr] [B:check] (branches=3) + -> [635: _is_likely_lang_tag] [B:check] (branches=1) + -> [636: _send_deepseek] [B:check] (branches=71) + -> [637: __init__] [B:check] (branches=2) + -> [638: _to_typed_tool_call] [B:check] (branches=3) + -> [639: add_consumer] [B:check] (branches=0) + -> [640: run_subagent_summarization] [B:check] (branches=11) + -> [641: reload_all] [B:check] (branches=2) + -> [642: _set_app_attr] [B:check] (branches=2) + -> [643: py_get_definition_result] [B:check] (branches=5) + -> [644: _populate_auto_slices_outline_result] [B:check] (branches=5) + -> [645: _list_minimax_models_result] [B:check] (branches=4) + -> [646: list_directory] [B:check] (branches=1) + -> [647: run_worker_lifecycle] [B:check] (branches=60) + -> [648: ts_cpp_get_skeleton_result] [B:check] (branches=5) + -> [649: from_dict] [B:check] (branches=0) + -> [650: __exit__] [B:check] (branches=0) + -> [651: _get_tm] [B:check] (branches=0) + -> [652: format_takes_diff] [B:check] (branches=10) + -> [653: send_openai_compatible] [B:is None?] (branches=5) [N:safe] + -> [654: _try_warm_sdk_result] [B:check] (branches=2) + -> [655: _set_bias_profile_result] [B:check] (branches=5) + -> [656: _tone_map] [B:check] (branches=0) + -> [657: _get_language_id] [B:check] (branches=7) + -> [658: get_context] [B:check] (branches=3) + -> [659: render_selectable_label] [B:check] (branches=6) + -> [660: from_dict] [B:check] (branches=0) + -> [661: _handle_mma_respond] [B:is None?] (branches=9) [N:safe] + -> [662: _trim_minimax_history] [B:check] (branches=8) + -> [663: __init__] [B:check] (branches=2) + -> [664: handle_endtag] [B:check] (branches=5) + -> [665: request_patch_approval] [B:check] (branches=0) + -> [666: _field_names_for_aggregate] [B:check] (branches=1) + -> [667: _analyze_function_field_accesses] [B:check] (branches=17) + -> [668: _summarise_generic] [B:check] (branches=10) + -> [669: generate_rationale] [B:check] (branches=0) + -> [670: summarise_items] [B:is None?] (branches=3) [N:safe] + -> [671: deep_search] [B:check] (branches=7) + -> [672: get_history] [B:check] (branches=1) + -> [673: log_cli_call] [B:is None?] (branches=3) [N:safe] + -> [674: update_session_metadata] [B:check] (branches=1) + -> [675: _api_post_api_session] [B:check] (branches=1) + -> [676: suggest_defusing_technique] [B:check] (branches=4) + -> [677: count_tokens] [B:check] (branches=0) + -> [678: _cb_unblock_ticket] [B:check] (branches=10) + -> [679: load_themes_from_dir] [B:check] (branches=6) + -> [680: get_editor] [B:check] (branches=1) + -> [681: _send_llama] [B:check] (branches=13) + -> [682: _classify_gemini_error] [B:check] (branches=21) + -> [683: _execute_gui_task_result] [B:check] (branches=6) + -> [684: request_patch_from_tier4_result] [B:check] (branches=6) + -> [685: popup] [B:check] (branches=0) + -> [686: spawn] [B:check] (branches=6) + -> [687: _handle_ticket_started] [B:check] (branches=8) + -> [688: load_track_history] [B:check] (branches=3) + -> [689: _get_gemini_history_list] [B:check] (branches=4) + -> [690: _starts_at_word_boundary] [B:check] (branches=4) + -> [691: py_find_usages] [B:check] (branches=1) + -> [692: run] [B:is None?] (branches=31) [N:safe] + -> [693: ts_c_update_definition_result] [B:check] (branches=6) + -> [694: load_theme_file] [B:check] (branches=5) + -> [695: post_gui] [B:check] (branches=0) + -> [696: register_session] [B:check] (branches=2) + -> [697: run] [B:check] (branches=1) + -> [698: load_context_preset] [B:check] (branches=1) + -> [699: py_get_class_summary] [B:check] (branches=1) + -> [700: _save_config_to_disk] [B:check] (branches=1) + -> [701: post_session] [B:check] (branches=1) + -> [702: __init__] [B:check] (branches=0) + -> [703: _cb_load_track] [B:check] (branches=2) + -> [704: _log_canary] [B:is None?] (branches=7) [N:safe] + -> [705: _cb_save_persona] [B:check] (branches=0) + -> [706: _parse_token_history_first_ts_result] [B:check] (branches=40) + -> [707: _file_to_aggregates] [B:check] (branches=4) + -> [708: current_provider] [B:check] (branches=0) + -> [709: approve_task] [B:check] (branches=3) + -> [710: _serialize_for_api] [B:check] (branches=4) + -> [711: from_dict] [B:check] (branches=0) + -> [712: build_markdown_from_items] [B:check] (branches=9) + -> [713: build_cross_audit_findings_for_aggregate] [B:check] (branches=7) + -> [714: _search_mcp] [B:check] (branches=1) + -> [715: from_dict] [B:check] (branches=0) + -> [716: call_tool] [B:check] (branches=2) + -> [717: get_syntax_palette_for_theme] [B:check] (branches=1) + -> [718: ts_c_get_definition_result] [B:check] (branches=5) + -> [719: rag_collection_name] [B:check] (branches=0) + -> [720: extract_tags] [B:check] (branches=0) + -> [721: trigger_patch] [B:check] (branches=1) + -> [722: _handle_set_comms_dirty] [B:check] (branches=0) + -> [723: stream_callback] [B:check] (branches=1) + -> [724: post_project] [B:check] (branches=0) + -> [725: _get_path] [B:check] (branches=3) + -> [726: _capture_workspace_profile] [B:check] (branches=3) + -> [727: cb_load_prior_log] [B:is None?] (branches=2) [N:safe] + -> [728: request_patch_from_tier4] [B:check] (branches=2) + -> [729: from_dict] [B:check] (branches=0) + -> [730: ai_status] [B:check] (branches=0) + -> [731: _cb_new_project_automated] [B:check] (branches=2) + -> [732: ts_cpp_get_skeleton] [B:check] (branches=1) + -> [733: _chunk_text] [B:check] (branches=0) + -> [734: _handle_mma_spawn_approval] [B:check] (branches=8) + -> [735: _handle_bead_updated] [B:check] (branches=4) + -> [736: save_preset] [B:check] (branches=1) + -> [737: save_profile] [B:check] (branches=1) + -> [738: extract_real_optimization_candidates] [B:check] (branches=4) + -> [739: __init__] [B:check] (branches=2) + -> [740: get_file_summary_result] [B:check] (branches=6) + -> [741: ts_cpp_get_definition] [B:check] (branches=1) + -> [742: _run_tier4_patch_generation_result] [B:check] (branches=5) + -> [743: analyze_consumer_fields] [B:check] (branches=10) + -> [744: apply_patch_to_file] [B:check] (branches=14) + -> [745: __getattr__] [B:check] (branches=0) + -> [746: _queue_put] [B:is None?] (branches=1) [N:safe] + -> [747: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [748: _resolve_path] [B:check] (branches=6) + -> [749: select_list_item] [B:check] (branches=0) + -> [750: get] [B:check] (branches=0) + -> [751: find_enclosing_function] [B:check] (branches=2) + -> [752: _handle_ai_response] [B:check] (branches=12) + -> [T:done] +``` + +**Effective codepaths:** 40142494212284116997693 (sum of 2^branches across 752 consumers) +**Total branch points:** 3466 +**Nil-check functions:** 74 + +**Defusing opportunities:** + +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 40142494212284116997693 -> 40142494212284116997545 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `metadata_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 123 field-check branches to 1 cache lookup. + - Effective codepaths: 40142494212284116997693 -> 123 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 40142494212284116997693 -> 752 + + +## Frequency + +**Dominant frequency:** per_turn +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions + +## Result coverage + +**Summary:** 457 producers, 697 consumers + +| metric | value | +|---|---| +| total producers | 457 | +| result producers | 457 | +| total consumers | 697 | +| result consumers | 0 | + +## Type alias coverage + +**Summary:** 123 sites; 0 typed (0%); 123 untyped (100%) + +| metric | value | +|---|---| +| total field-access sites | 123 | +| typed sites (canonical field) | 0 | +| untyped sites (wildcard) | 123 | + +## Cross-audit findings + +| bucket | audit script | site count | example file | example line | note | +|---|---|---|---|---|---| +| optional_in_baseline | `audit_optional_in_3_files` | 79 | `src\mcp_client.py` | 1285 | 79 sites | + +## Decomposition cost + +**Current cost estimate:** 520 us/turn +**Componentize savings:** 0 us/turn +**Unify savings:** 0 us/turn +**Recommended direction:** hold +**Rationale:** Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=6, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +**Struct field count (estimated):** 6 +**Struct frozen:** True + +## Struct shape (inferred from producer returns) + +| field | access count | access pattern | +|---|---|---| +| `content` | 3 | hot | +| `marker` | 3 | hot | +| `get` | 3 | hot | +| `files` | 2 | used | +| `_id` | 2 | used | +| `_flags` | 2 | used | +| `_size` | 2 | used | +| `_dirty` | 2 | used | +| `engine` | 2 | used | +| `controller` | 2 | used | +| `_make_request` | 1 | used | +| `data` | 1 | used | +| `update_session_metadata` | 1 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `_read_beads` | 1 | used | +| `_write_beads` | 1 | used | +| `lower` | 1 | used | +| `fqname` | 1 | used | +| `children` | 1 | used | +| `type` | 1 | used | +| `child_by_field_name` | 1 | used | +| `active_track` | 1 | used | +| `_mma_status` | 1 | used | +| `active_tier` | 1 | used | +| `active_tickets` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_cb_load_workspace_profile` | 1 | used | +| `app` | 1 | used | +| `local_ts` | 1 | used | +| `_offload_entry_payload` | 1 | used | +| `ui_auto_add_history` | 1 | used | +| `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `screenshots` | 1 | used | +| `_undo_stack` | 1 | used | +| `_redo_stack` | 1 | used | +| `values` | 1 | used | +| `ai_status` | 1 | used | +| `active_discussion` | 1 | used | +| `project` | 1 | used | +| `project_root` | 1 | used | +| `_load_file` | 1 | used | +| `startswith` | 1 | used | +| `model` | 1 | used | +| `parent` | 1 | used | +| `_report_worker_error` | 1 | used | +| `rag_config` | 1 | used | +| `collection` | 1 | used | + +## Optimization candidates + +_(no optimization candidates generated)_ + +## Verdict + +Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=6, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. + +## Evidence appendix + +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.code_path_audit.aggregate_cross_audit_findings` | `whole_struct` | | low | +| `src.api_hook_client.approve_mma_ticket` | `whole_struct` | `_make_request`=1 | high | +| `src.log_registry.update_auto_whitelist_status` | `mixed` | `data`=2, `update_session_metadata`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client.run_tier4_analysis` | `whole_struct` | | low | +| `src.app_controller._flush_to_project_result` | `whole_struct` | | low | +| `src.code_path_audit.classify_memory_dim` | `whole_struct` | | low | +| `src.imgui_scopes.__init__` | `field_by_field` | `_id`=1, `_flags`=1, `_size`=2 | high | +| `src.beads_client.create_bead` | `mixed` | `_read_beads`=1, `_write_beads`=1 | high | +| `src.command_palette.fuzzy_match` | `whole_struct` | `lower`=1 | high | +| `src.theme_2.set_gamma` | `whole_struct` | | low | +| `src.multi_agent_conductor.update_task_status` | `mixed` | `_dirty`=1, `engine`=1 | high | +| `src.code_path_audit.estimate_call_frequency` | `whole_struct` | `fqname`=2 | high | +| `src.file_cache.walk` | `field_by_field` | `children`=3, `type`=2, `child_by_field_name`=1 | high | +| `src.code_path_audit.detect_access_pattern` | `whole_struct` | | low | +| `src.api_hooks._get_app_attr` | `whole_struct` | `controller`=2 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.app_controller._handle_mma_state_update` | `field_by_field` | `get`=1, `active_track`=5, `_mma_status`=2, `active_tier`=6, `active_tickets`=2, `mma_tier_usage`=6, `_cb_load_workspace_profile`=1 | high | +| `src.ai_client._list_deepseek_models` | `whole_struct` | | low | +| `src.api_hooks.__init__` | `whole_struct` | `app`=1 | high | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.multi_agent_conductor.approve_task` | `mixed` | `_dirty`=1, `engine`=1 | high | +| `src.gui_2.ui_screenshot_paths` | `whole_struct` | `screenshots`=1 | high | +| `src.imgui_scopes.__init__` | `field_by_field` | `_id`=1, `_flags`=1, `_size`=2 | high | +| `src.ai_client._extract_gemini_thoughts_result` | `whole_struct` | | low | +| `src.theme_2.get_brightness` | `whole_struct` | | low | +| `src.history.undo` | `mixed` | `_undo_stack`=2, `_redo_stack`=1 | high | +| `src.gui_2._drain_normalize_errors` | `whole_struct` | `values`=1 | high | +| `src.app_controller._rename_discussion` | `field_by_field` | `ai_status`=1, `active_discussion`=2, `project`=1 | high | +| `src.mcp_client.get_file_slice` | `whole_struct` | | low | +| `src.imgui_scopes.tab_bar` | `whole_struct` | | low | +| `src.session_logger.log_tool_call` | `whole_struct` | | low | +| `src.gui_2.current_model` | `whole_struct` | `controller`=1 | high | +| `src.rag_engine.embed` | `whole_struct` | | low | +| `src.presets.get_preset_scope` | `mixed` | `project_root`=2, `_load_file`=2 | high | +| `src.code_path_audit.file_origin_memory_dim` | `whole_struct` | `startswith`=1 | high | +| `src.rag_engine.__init__` | `whole_struct` | `model`=1 | high | +| `src.theme_2.get_gamma` | `whole_struct` | | low | +| `src.imgui_scopes.style_var` | `whole_struct` | | low | +| `src.presets._save_file` | `whole_struct` | `parent`=4 | high | +| `src.aggregate.is_absolute_with_drive` | `whole_struct` | | low | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | `_report_worker_error`=1 | high | +| `src.app_controller.ui_file_paths` | `whole_struct` | `files`=1 | high | +| `src.app_controller.rag_emb_provider` | `whole_struct` | `rag_config`=2 | high | +| `src.code_path_audit.synthesize_aggregate_profile` | `whole_struct` | `get`=5 | high | +| `src.rag_engine._check_existing_index_result` | `whole_struct` | `collection`=1 | high | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.gui_2._populate_auto_slices_file_read_result` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.ai_client._try_warm_sdk_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.summarize._summarise_generic` | `per_turn` | `static_analysis` | producer from src\summarize.py | + + +--- + + + +### 4.2 FileItems + +**Aggregate kind:** typealias +**Memory dim:** curation +**Is candidate:** False + +## Pipeline summary + +- Producers: 6 +- Consumers: 9 +- Distinct producer fqnames: 6 +- Distinct consumer fqnames: 9 +- Access pattern (aggregate): whole_struct +- Frequency (aggregate): per_turn +- Decomposition direction: hold +- Struct field count (estimated): 5 + +## Producers (6) + +### `src\ai_client.py` (4 producers) + +- `src.ai_client._list_gemini_models_result` (line 1626) +- `src.ai_client._list_anthropic_models_result` (line 1317) +- `src.ai_client._list_minimax_models_result` (line 2436) +- `src.ai_client._set_minimax_provider_result` (line 398) + +### `src\gui_2.py` (2 producers) + +- `src.gui_2._render_beads_tab_list_result` (line 8314) +- `src.gui_2._drain_normalize_errors` (line 7417) + +## Consumers (9) + +### `src\ai_client.py` (4 consumers) + +- `src.ai_client._build_file_context_text` (line 1092) +- `src.ai_client._reread_file_items_result` (line 1056) +- `src.ai_client._build_file_diff_text` (line 1105) +- `src.ai_client.run_with_tool_loop` (line 833) + +### `src\app_controller.py` (3 consumers) + +- `src.app_controller._symbol_resolution_result` (line 3506) +- `src.app_controller._topological_sort_tickets_result` (line 4708) +- `src.app_controller._serialize_tool_calls_result` (line 2217) + +### `src\gui_2.py` (1 consumer) + +- `src.gui_2.__init__` (line 7550) + +### `src\project_manager.py` (1 consumer) + +- `src.project_manager.calculate_track_progress` (line 420) + +## Field access matrix + +| consumer | _attr_name | _cached | _module_name | _report_worker_error | append | +|---|---|---|---|---|---| +| `_symbol_resolution_result` | . | . | . | . | . | +| `_topological_sort_tickets_result` | . | . | . | 1 | . | +| `_build_file_context_text` | . | . | . | . | . | +| `_reread_file_items_result` | . | . | . | . | . | +| `_build_file_diff_text` | . | . | . | . | . | +| `__init__` | 1 | 1 | 1 | . | . | +| `_serialize_tool_calls_result` | . | . | . | . | . | +| `calculate_track_progress` | . | . | . | . | . | +| `run_with_tool_loop` | . | . | . | . | 2 | + +## Access pattern + +**Dominant pattern:** whole_struct +**Evidence count:** 9 + +**Per-function pattern distribution:** + +- `whole_struct`: 8 functions (89%) +- `field_by_field`: 1 functions (11%) + +## SSDL Sketch for `FileItems` + +``` +[Q:FileItems entry-point] -> [Q:PCG lookup] + -> [1: _symbol_resolution_result] [B:check] (branches=4) + -> [2: _topological_sort_tickets_result] [B:check] (branches=2) + -> [3: _build_file_context_text] [B:check] (branches=3) + -> [4: _reread_file_items_result] [B:is None?] (branches=5) [N:safe] + -> [5: _build_file_diff_text] [B:check] (branches=6) + -> [6: __init__] [B:check] (branches=0) + -> [7: _serialize_tool_calls_result] [B:check] (branches=2) + -> [8: calculate_track_progress] [B:check] (branches=1) + -> [9: run_with_tool_loop] [B:is None?] (branches=23) [N:safe] + -> [T:done] +``` + +**Effective codepaths:** 8388739 (sum of 2^branches across 9 consumers) +**Total branch points:** 46 +**Nil-check functions:** 2 + +**Defusing opportunities:** + +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 8388739 -> 8388735 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `fileitems_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 6 field-check branches to 1 cache lookup. + - Effective codepaths: 8388739 -> 6 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 8388739 -> 9 + + +## Frequency + +**Dominant frequency:** per_turn +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions + +## Result coverage + +**Summary:** 6 producers, 9 consumers + +| metric | value | +|---|---| +| total producers | 6 | +| result producers | 6 | +| total consumers | 9 | +| result consumers | 0 | + +## Type alias coverage + +**Summary:** 6 sites; 0 typed (0%); 6 untyped (100%) + +| metric | value | +|---|---| +| total field-access sites | 6 | +| typed sites (canonical field) | 0 | +| untyped sites (wildcard) | 6 | + +## Cross-audit findings + +_(no cross-audit findings mapped to this aggregate)_ + +## Decomposition cost + +**Current cost estimate:** 470 us/turn +**Componentize savings:** 0 us/turn +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** FileItems: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +**Struct field count (estimated):** 5 +**Struct frozen:** True + +## Struct shape (inferred from producer returns) + +| field | access count | access pattern | +|---|---|---| +| `_report_worker_error` | 1 | used | +| `_module_name` | 1 | used | +| `_attr_name` | 1 | used | +| `_cached` | 1 | used | +| `append` | 1 | used | + +## Optimization candidates + +_(no optimization candidates generated)_ + +## Verdict + +FileItems: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. + +## Evidence appendix + +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.app_controller._symbol_resolution_result` | `whole_struct` | | low | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | `_report_worker_error`=1 | high | +| `src.ai_client._build_file_context_text` | `whole_struct` | | low | +| `src.ai_client._reread_file_items_result` | `whole_struct` | | low | +| `src.ai_client._build_file_diff_text` | `whole_struct` | | low | +| `src.gui_2.__init__` | `field_by_field` | `_module_name`=1, `_attr_name`=1, `_cached`=1 | high | +| `src.app_controller._serialize_tool_calls_result` | `whole_struct` | | low | +| `src.project_manager.calculate_track_progress` | `whole_struct` | | low | +| `src.ai_client.run_with_tool_loop` | `whole_struct` | `append`=2 | high | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.gui_2._render_beads_tab_list_result` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.gui_2._drain_normalize_errors` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.ai_client._list_gemini_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.ai_client._list_anthropic_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.ai_client._list_minimax_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | + + +--- + + + +### 4.3 HistoryMessage + +**Aggregate kind:** typealias +**Memory dim:** discussion +**Is candidate:** False + +## Pipeline summary + +- Producers: 118 +- Consumers: 68 +- Distinct producer fqnames: 97 +- Distinct consumer fqnames: 48 +- Access pattern (aggregate): whole_struct +- Frequency (aggregate): per_turn +- Decomposition direction: hold +- Struct field count (estimated): 5 + +## Producers (118) + +### `src\aggregate.py` (1 producer) + +- `src.aggregate.build_file_items` (line 158) + +### `src\ai_client.py` (16 producers) + +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) + +### `src\api_hook_client.py` (39 producers) + +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\app_controller.py` (30 producers) + +- `src.app_controller.wait` (line 5205) +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.status` (line 2865) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_status` (line 209) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.get_api_session` (line 2847) + +### `src\models.py` (23 producers) + +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 938) +- `src.models.to_dict` (line 1059) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 1000) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 618) +- `src.models.to_dict` (line 701) + +### `src\project_manager.py` (8 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) + +### `src\provider_state.py` (1 producer) + +- `src.provider_state.get_all` (line 34) + +## Consumers (68) + +### `src\aggregate.py` (5 consumers) + +- `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.run` (line 479) +- `src.aggregate._build_files_section_from_items` (line 300) + +### `src\ai_client.py` (29 consumers) + +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._estimate_message_tokens` (line 1218) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.send` (line 3208) + +### `src\app_controller.py` (5 consumers) + +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._on_comms_entry` (line 4282) +- `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._start_track_logic` (line 4721) + +### `src\models.py` (22 consumers) + +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 506) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 378) +- `src.models.from_dict` (line 1038) +- `src.models.from_dict` (line 1007) +- `src.models.from_dict` (line 747) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.from_dict` (line 866) +- `src.models.from_dict` (line 454) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 630) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 949) +- `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 1072) + +### `src\project_manager.py` (5 consumers) + +- `src.project_manager.save_project` (line 229) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.migrate_from_legacy_config` (line 253) + +### `src\provider_state.py` (2 consumers) + +- `src.provider_state.append` (line 30) +- `src.provider_state.replace_all` (line 38) + +## Field access matrix + +| consumer | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _token_history | _topological_sort_tickets_result | active_discussion | active_project_path | active_project_root | ai_status | append | config | content | context_files | discussion | encode | engines | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `append` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | 1 | 1 | 1 | . | . | 4 | 4 | 1 | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `replace_all` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | 2 | 2 | . | . | . | 1 | 1 | 1 | 1 | 4 | . | 1 | . | 1 | . | . | 1 | + +_... 25 more fields_ + +## Access pattern + +**Dominant pattern:** whole_struct +**Evidence count:** 50 + +**Per-function pattern distribution:** + +- `whole_struct`: 27 functions (54%) +- `mixed`: 19 functions (38%) +- `field_by_field`: 4 functions (8%) + +## SSDL Sketch for `HistoryMessage` + +``` +[Q:HistoryMessage entry-point] -> [Q:PCG lookup] + -> [1: _invalidate_token_estimate] [B:check] (branches=0) + -> [2: from_dict] [B:check] (branches=0) + -> [3: build_markdown_from_items] [B:check] (branches=9) + -> [4: from_dict] [B:check] (branches=0) + -> [5: _create_gemini_cache_result] [B:check] (branches=3) + -> [6: _send_grok] [B:check] (branches=14) + -> [7: _strip_private_keys] [B:check] (branches=0) + -> [8: from_dict] [B:check] (branches=0) + -> [9: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [10: from_dict] [B:check] (branches=0) + -> [11: from_dict] [B:check] (branches=0) + -> [12: _send_gemini] [B:is None?] (branches=75) [N:safe] + -> [13: from_dict] [B:check] (branches=0) + -> [14: from_dict] [B:check] (branches=0) + -> [15: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [16: save_project] [B:is None?] (branches=7) [N:safe] + -> [17: _trim_anthropic_history] [B:check] (branches=13) + -> [18: append] [B:check] (branches=1) + -> [19: _send_llama] [B:check] (branches=13) + -> [20: build_tier3_context] [B:check] (branches=50) + -> [21: _offload_entry_payload] [B:check] (branches=10) + -> [22: format_discussion] [B:check] (branches=0) + -> [23: entry_to_str] [B:check] (branches=3) + -> [24: _repair_minimax_history] [B:check] (branches=10) + -> [25: from_dict] [B:check] (branches=0) + -> [26: from_dict] [B:check] (branches=0) + -> [27: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [28: _send_deepseek] [B:check] (branches=71) + -> [29: _add_bleed_derived] [B:check] (branches=0) + -> [30: from_dict] [B:check] (branches=0) + -> [31: build_markdown_no_history] [B:check] (branches=0) + -> [32: flat_config] [B:check] (branches=2) + -> [33: _send_llama_native] [B:check] (branches=12) + -> [34: ollama_chat] [B:check] (branches=3) + -> [35: _send_qwen] [B:check] (branches=9) + -> [36: _on_comms_entry] [B:check] (branches=32) + -> [37: from_dict] [B:check] (branches=0) + -> [38: from_dict] [B:check] (branches=0) + -> [39: _repair_deepseek_history] [B:check] (branches=6) + -> [40: from_dict] [B:check] (branches=0) + -> [41: replace_all] [B:check] (branches=1) + -> [42: from_dict] [B:check] (branches=0) + -> [43: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [44: from_dict] [B:check] (branches=0) + -> [45: _repair_anthropic_history] [B:check] (branches=6) + -> [46: _strip_cache_controls] [B:check] (branches=4) + -> [47: run] [B:check] (branches=1) + -> [48: _save_config_to_disk] [B:check] (branches=1) + -> [49: _dashscope_call] [B:check] (branches=5) + -> [50: _start_track_logic_result] [B:check] (branches=10) + -> [51: from_dict] [B:check] (branches=0) + -> [52: _estimate_prompt_tokens] [B:check] (branches=2) + -> [53: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [54: from_dict] [B:check] (branches=0) + -> [55: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [56: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [57: _pre_dispatch] [B:check] (branches=8) + -> [58: from_dict] [B:check] (branches=0) + -> [59: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [60: _trim_minimax_history] [B:check] (branches=8) + -> [61: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [62: _start_track_logic] [B:check] (branches=1) + -> [63: from_dict] [B:check] (branches=0) + -> [64: from_dict] [B:check] (branches=0) + -> [65: from_dict] [B:check] (branches=0) + -> [66: migrate_from_legacy_config] [B:check] (branches=2) + -> [67: _send_minimax] [B:check] (branches=11) + -> [68: send] [B:check] (branches=19) + -> [T:done] +``` + +**Effective codepaths:** 40140116231395706750394 (sum of 2^branches across 68 consumers) +**Total branch points:** 543 +**Nil-check functions:** 9 + +**Defusing opportunities:** + +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 40140116231395706750394 -> 40140116231395706750376 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `historymessage_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 137 field-check branches to 1 cache lookup. + - Effective codepaths: 40140116231395706750394 -> 137 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 40140116231395706750394 -> 68 + + +## Frequency + +**Dominant frequency:** per_turn +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions + +## Result coverage + +**Summary:** 97 producers, 48 consumers + +| metric | value | +|---|---| +| total producers | 97 | +| result producers | 97 | +| total consumers | 48 | +| result consumers | 0 | + +## Type alias coverage + +**Summary:** 137 sites; 0 typed (0%); 137 untyped (100%) + +| metric | value | +|---|---| +| total field-access sites | 137 | +| typed sites (canonical field) | 0 | +| untyped sites (wildcard) | 137 | + +## Cross-audit findings + +_(no cross-audit findings mapped to this aggregate)_ + +## Decomposition cost + +**Current cost estimate:** 470 us/turn +**Componentize savings:** 0 us/turn +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** HistoryMessage: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +**Struct field count (estimated):** 5 +**Struct frozen:** True + +## Struct shape (inferred from producer returns) + +| field | access count | access pattern | +|---|---|---| +| `content` | 15 | hot | +| `marker` | 15 | hot | +| `get` | 7 | hot | +| `append` | 3 | hot | +| `pop` | 2 | used | +| `files` | 2 | used | +| `lock` | 2 | used | +| `messages` | 2 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `estimated_prompt_tokens` | 1 | used | +| `max_prompt_tokens` | 1 | used | +| `utilization_pct` | 1 | used | +| `headroom` | 1 | used | +| `would_trim` | 1 | used | +| `sys_tokens` | 1 | used | +| `tool_tokens` | 1 | used | +| `history_tokens` | 1 | used | +| `local_ts` | 1 | used | +| `_offload_entry_payload` | 1 | used | +| `ui_auto_add_history` | 1 | used | +| `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `items` | 1 | used | +| `output` | 1 | used | +| `ai_status` | 1 | used | +| `context_files` | 1 | used | +| `_pending_gui_tasks_lock` | 1 | used | +| `_topological_sort_tickets_result` | 1 | used | +| `active_project_root` | 1 | used | +| `event_queue` | 1 | used | +| `engines` | 1 | used | +| `project` | 1 | used | +| `active_discussion` | 1 | used | +| `submit_io` | 1 | used | +| `tracks` | 1 | used | +| `config` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_pending_gui_tasks` | 1 | used | +| `mma_step_mode` | 1 | used | +| `active_project_path` | 1 | used | + +## Optimization candidates + +_(no optimization candidates generated)_ + +## Verdict + +HistoryMessage: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. + +## Evidence appendix + +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | +| `src.ai_client._send_grok` | `whole_struct` | | low | +| `src.ai_client._strip_private_keys` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_anthropic` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | +| `src.provider_state.append` | `mixed` | `lock`=1, `messages`=1 | high | +| `src.ai_client._send_llama` | `whole_struct` | | low | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | +| `src.ai_client._send_deepseek` | `whole_struct` | | low | +| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._send_qwen` | `whole_struct` | | low | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.provider_state.replace_all` | `mixed` | `lock`=1, `messages`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | +| `src.models._save_config_to_disk` | `whole_struct` | | low | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.ai_client._extract_dashscope_tool_calls` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller.wait` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.ai_client._dashscope_call` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | + + +--- + + + +### 4.4 ToolCall + +**Aggregate kind:** typealias +**Memory dim:** control +**Is candidate:** False + +## Pipeline summary + +- Producers: 118 +- Consumers: 67 +- Distinct producer fqnames: 97 +- Distinct consumer fqnames: 47 +- Access pattern (aggregate): whole_struct +- Frequency (aggregate): per_turn +- Decomposition direction: hold +- Struct field count (estimated): 5 + +## Producers (118) + +### `src\aggregate.py` (1 producer) + +- `src.aggregate.build_file_items` (line 158) + +### `src\ai_client.py` (16 producers) + +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) + +### `src\api_hook_client.py` (39 producers) + +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\app_controller.py` (30 producers) + +- `src.app_controller.wait` (line 5205) +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.status` (line 2865) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_status` (line 209) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.get_api_session` (line 2847) + +### `src\models.py` (23 producers) + +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 938) +- `src.models.to_dict` (line 1059) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 1000) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 618) +- `src.models.to_dict` (line 701) + +### `src\openai_compatible.py` (1 producer) + +- `src.openai_compatible._to_typed_tool_call` (line 43) + +### `src\project_manager.py` (8 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) + +## Consumers (67) + +### `src\aggregate.py` (5 consumers) + +- `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.run` (line 479) +- `src.aggregate._build_files_section_from_items` (line 300) + +### `src\ai_client.py` (29 consumers) + +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._estimate_message_tokens` (line 1218) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.send` (line 3208) + +### `src\app_controller.py` (5 consumers) + +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._on_comms_entry` (line 4282) +- `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._start_track_logic` (line 4721) + +### `src\models.py` (22 consumers) + +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 506) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 378) +- `src.models.from_dict` (line 1038) +- `src.models.from_dict` (line 1007) +- `src.models.from_dict` (line 747) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.from_dict` (line 866) +- `src.models.from_dict` (line 454) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 630) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 949) +- `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 1072) + +### `src\openai_compatible.py` (1 consumer) + +- `src.openai_compatible._to_dict_tool_call` (line 54) + +### `src\project_manager.py` (5 consumers) + +- `src.project_manager.save_project` (line 229) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.migrate_from_legacy_config` (line 253) + +## Field access matrix + +| consumer | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _token_history | _topological_sort_tickets_result | active_discussion | active_project_path | active_project_root | ai_status | append | config | content | context_files | discussion | encode | engines | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | 1 | 1 | 1 | . | . | 4 | 4 | 1 | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_to_dict_tool_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | 2 | 2 | . | . | . | 1 | 1 | 1 | 1 | 4 | . | 1 | . | 1 | . | . | 1 | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | + +_... 24 more fields_ + +## Access pattern + +**Dominant pattern:** whole_struct +**Evidence count:** 50 + +**Per-function pattern distribution:** + +- `whole_struct`: 28 functions (56%) +- `mixed`: 18 functions (36%) +- `field_by_field`: 4 functions (8%) + +## SSDL Sketch for `ToolCall` + +``` +[Q:ToolCall entry-point] -> [Q:PCG lookup] + -> [1: _invalidate_token_estimate] [B:check] (branches=0) + -> [2: from_dict] [B:check] (branches=0) + -> [3: build_markdown_from_items] [B:check] (branches=9) + -> [4: from_dict] [B:check] (branches=0) + -> [5: _create_gemini_cache_result] [B:check] (branches=3) + -> [6: _send_grok] [B:check] (branches=14) + -> [7: _strip_private_keys] [B:check] (branches=0) + -> [8: from_dict] [B:check] (branches=0) + -> [9: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [10: from_dict] [B:check] (branches=0) + -> [11: from_dict] [B:check] (branches=0) + -> [12: _send_gemini] [B:is None?] (branches=75) [N:safe] + -> [13: from_dict] [B:check] (branches=0) + -> [14: from_dict] [B:check] (branches=0) + -> [15: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [16: save_project] [B:is None?] (branches=7) [N:safe] + -> [17: _trim_anthropic_history] [B:check] (branches=13) + -> [18: _send_llama] [B:check] (branches=13) + -> [19: build_tier3_context] [B:check] (branches=50) + -> [20: _offload_entry_payload] [B:check] (branches=10) + -> [21: format_discussion] [B:check] (branches=0) + -> [22: entry_to_str] [B:check] (branches=3) + -> [23: _repair_minimax_history] [B:check] (branches=10) + -> [24: from_dict] [B:check] (branches=0) + -> [25: from_dict] [B:check] (branches=0) + -> [26: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [27: _send_deepseek] [B:check] (branches=71) + -> [28: _add_bleed_derived] [B:check] (branches=0) + -> [29: from_dict] [B:check] (branches=0) + -> [30: build_markdown_no_history] [B:check] (branches=0) + -> [31: flat_config] [B:check] (branches=2) + -> [32: _send_llama_native] [B:check] (branches=12) + -> [33: ollama_chat] [B:check] (branches=3) + -> [34: _send_qwen] [B:check] (branches=9) + -> [35: _on_comms_entry] [B:check] (branches=32) + -> [36: from_dict] [B:check] (branches=0) + -> [37: from_dict] [B:check] (branches=0) + -> [38: _repair_deepseek_history] [B:check] (branches=6) + -> [39: from_dict] [B:check] (branches=0) + -> [40: from_dict] [B:check] (branches=0) + -> [41: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [42: from_dict] [B:check] (branches=0) + -> [43: _to_dict_tool_call] [B:check] (branches=0) + -> [44: _repair_anthropic_history] [B:check] (branches=6) + -> [45: _strip_cache_controls] [B:check] (branches=4) + -> [46: run] [B:check] (branches=1) + -> [47: _save_config_to_disk] [B:check] (branches=1) + -> [48: _dashscope_call] [B:check] (branches=5) + -> [49: _start_track_logic_result] [B:check] (branches=10) + -> [50: from_dict] [B:check] (branches=0) + -> [51: _estimate_prompt_tokens] [B:check] (branches=2) + -> [52: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [53: from_dict] [B:check] (branches=0) + -> [54: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [55: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [56: _pre_dispatch] [B:check] (branches=8) + -> [57: from_dict] [B:check] (branches=0) + -> [58: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [59: _trim_minimax_history] [B:check] (branches=8) + -> [60: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [61: _start_track_logic] [B:check] (branches=1) + -> [62: from_dict] [B:check] (branches=0) + -> [63: from_dict] [B:check] (branches=0) + -> [64: from_dict] [B:check] (branches=0) + -> [65: migrate_from_legacy_config] [B:check] (branches=2) + -> [66: _send_minimax] [B:check] (branches=11) + -> [67: send] [B:check] (branches=19) + -> [T:done] +``` + +**Effective codepaths:** 40140116231395706750391 (sum of 2^branches across 67 consumers) +**Total branch points:** 541 +**Nil-check functions:** 9 + +**Defusing opportunities:** + +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 40140116231395706750391 -> 40140116231395706750373 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `toolcall_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 136 field-check branches to 1 cache lookup. + - Effective codepaths: 40140116231395706750391 -> 136 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 40140116231395706750391 -> 67 + + +## Frequency + +**Dominant frequency:** per_turn +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions + +## Result coverage + +**Summary:** 97 producers, 47 consumers + +| metric | value | +|---|---| +| total producers | 97 | +| result producers | 97 | +| total consumers | 47 | +| result consumers | 0 | + +## Type alias coverage + +**Summary:** 136 sites; 0 typed (0%); 136 untyped (100%) + +| metric | value | +|---|---| +| total field-access sites | 136 | +| typed sites (canonical field) | 0 | +| untyped sites (wildcard) | 136 | + +## Cross-audit findings + +_(no cross-audit findings mapped to this aggregate)_ + +## Decomposition cost + +**Current cost estimate:** 470 us/turn +**Componentize savings:** 0 us/turn +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** ToolCall: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +**Struct field count (estimated):** 5 +**Struct frozen:** True + +## Struct shape (inferred from producer returns) + +| field | access count | access pattern | +|---|---|---| +| `content` | 16 | hot | +| `marker` | 16 | hot | +| `get` | 7 | hot | +| `append` | 3 | hot | +| `pop` | 2 | used | +| `files` | 2 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `estimated_prompt_tokens` | 1 | used | +| `max_prompt_tokens` | 1 | used | +| `utilization_pct` | 1 | used | +| `headroom` | 1 | used | +| `would_trim` | 1 | used | +| `sys_tokens` | 1 | used | +| `tool_tokens` | 1 | used | +| `history_tokens` | 1 | used | +| `local_ts` | 1 | used | +| `_offload_entry_payload` | 1 | used | +| `ui_auto_add_history` | 1 | used | +| `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `items` | 1 | used | +| `to_dict` | 1 | used | +| `output` | 1 | used | +| `ai_status` | 1 | used | +| `context_files` | 1 | used | +| `_pending_gui_tasks_lock` | 1 | used | +| `_topological_sort_tickets_result` | 1 | used | +| `active_project_root` | 1 | used | +| `event_queue` | 1 | used | +| `engines` | 1 | used | +| `project` | 1 | used | +| `active_discussion` | 1 | used | +| `submit_io` | 1 | used | +| `tracks` | 1 | used | +| `config` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_pending_gui_tasks` | 1 | used | +| `mma_step_mode` | 1 | used | +| `active_project_path` | 1 | used | + +## Optimization candidates + +_(no optimization candidates generated)_ + +## Verdict + +ToolCall: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. + +## Evidence appendix + +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | +| `src.ai_client._send_grok` | `whole_struct` | | low | +| `src.ai_client._strip_private_keys` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_anthropic` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | +| `src.ai_client._send_llama` | `whole_struct` | | low | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | +| `src.ai_client._send_deepseek` | `whole_struct` | | low | +| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._send_qwen` | `whole_struct` | | low | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.openai_compatible._to_dict_tool_call` | `whole_struct` | `to_dict`=1 | high | +| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | +| `src.models._save_config_to_disk` | `whole_struct` | | low | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.ai_client._extract_dashscope_tool_calls` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller.wait` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.ai_client._dashscope_call` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | + + +--- + + + +### 4.5 CommsLog + +**Aggregate kind:** typealias +**Memory dim:** discussion +**Is candidate:** False + +## Pipeline summary + +- Producers: 6 +- Consumers: 5 +- Distinct producer fqnames: 6 +- Distinct consumer fqnames: 5 +- Access pattern (aggregate): whole_struct +- Frequency (aggregate): per_turn +- Decomposition direction: hold +- Struct field count (estimated): 5 + +## Producers (6) + +### `src\ai_client.py` (4 producers) + +- `src.ai_client._list_gemini_models_result` (line 1626) +- `src.ai_client._list_anthropic_models_result` (line 1317) +- `src.ai_client._list_minimax_models_result` (line 2436) +- `src.ai_client._set_minimax_provider_result` (line 398) + +### `src\gui_2.py` (2 producers) + +- `src.gui_2._render_beads_tab_list_result` (line 8314) +- `src.gui_2._drain_normalize_errors` (line 7417) + +## Consumers (5) + +### `src\app_controller.py` (3 consumers) + +- `src.app_controller._symbol_resolution_result` (line 3506) +- `src.app_controller._topological_sort_tickets_result` (line 4708) +- `src.app_controller._serialize_tool_calls_result` (line 2217) + +### `src\gui_2.py` (1 consumer) + +- `src.gui_2.__init__` (line 7550) + +### `src\project_manager.py` (1 consumer) + +- `src.project_manager.calculate_track_progress` (line 420) + +## Field access matrix + +| consumer | _attr_name | _cached | _module_name | _report_worker_error | +|---|---|---|---|---| +| `_symbol_resolution_result` | . | . | . | . | +| `_topological_sort_tickets_result` | . | . | . | 1 | +| `__init__` | 1 | 1 | 1 | . | +| `_serialize_tool_calls_result` | . | . | . | . | +| `calculate_track_progress` | . | . | . | . | + +## Access pattern + +**Dominant pattern:** whole_struct +**Evidence count:** 5 + +**Per-function pattern distribution:** + +- `whole_struct`: 4 functions (80%) +- `field_by_field`: 1 functions (20%) + +## SSDL Sketch for `CommsLog` + +``` +[Q:CommsLog entry-point] -> [Q:PCG lookup] + -> [1: _symbol_resolution_result] [B:check] (branches=4) + -> [2: _topological_sort_tickets_result] [B:check] (branches=2) + -> [3: __init__] [B:check] (branches=0) + -> [4: _serialize_tool_calls_result] [B:check] (branches=2) + -> [5: calculate_track_progress] [B:check] (branches=1) + -> [T:done] +``` + +**Effective codepaths:** 27 (sum of 2^branches across 5 consumers) +**Total branch points:** 9 +**Nil-check functions:** 0 + +**Defusing opportunities:** + +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `commslog_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 4 field-check branches to 1 cache lookup. + - Effective codepaths: 27 -> 4 + + +## Frequency + +**Dominant frequency:** per_turn +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions + +## Result coverage + +**Summary:** 6 producers, 5 consumers + +| metric | value | +|---|---| +| total producers | 6 | +| result producers | 6 | +| total consumers | 5 | +| result consumers | 0 | + +## Type alias coverage + +**Summary:** 4 sites; 0 typed (0%); 4 untyped (100%) + +| metric | value | +|---|---| +| total field-access sites | 4 | +| typed sites (canonical field) | 0 | +| untyped sites (wildcard) | 4 | + +## Cross-audit findings + +| bucket | audit script | site count | example file | example line | note | +|---|---|---|---|---|---| +| optional_in_baseline | `audit_optional_in_3_files` | 76 | `src\ai_client.py` | 159 | 76 sites | + +## Decomposition cost + +**Current cost estimate:** 470 us/turn +**Componentize savings:** 0 us/turn +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** CommsLog: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +**Struct field count (estimated):** 5 +**Struct frozen:** True + +## Struct shape (inferred from producer returns) + +| field | access count | access pattern | +|---|---|---| +| `_report_worker_error` | 1 | used | +| `_module_name` | 1 | used | +| `_attr_name` | 1 | used | +| `_cached` | 1 | used | + +## Optimization candidates + +_(no optimization candidates generated)_ + +## Verdict + +CommsLog: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. + +## Evidence appendix + +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.app_controller._symbol_resolution_result` | `whole_struct` | | low | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | `_report_worker_error`=1 | high | +| `src.gui_2.__init__` | `field_by_field` | `_module_name`=1, `_attr_name`=1, `_cached`=1 | high | +| `src.app_controller._serialize_tool_calls_result` | `whole_struct` | | low | +| `src.project_manager.calculate_track_progress` | `whole_struct` | | low | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.gui_2._render_beads_tab_list_result` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.gui_2._drain_normalize_errors` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.ai_client._list_gemini_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.ai_client._list_anthropic_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.ai_client._list_minimax_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | + + +--- + + + +### 4.6 CommsLogEntry + +**Aggregate kind:** typealias +**Memory dim:** discussion +**Is candidate:** False + +## Pipeline summary + - Producers: 117 - Consumers: 66 - Distinct producer fqnames: 96 @@ -310,7 +4482,7 @@ This section embeds the full per-aggregate audit output. Each aggregate has its - Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn - Decomposition direction: hold -- Struct field count (estimated): 10 +- Struct field count (estimated): 5 ## Producers (117) @@ -320,134 +4492,134 @@ This section embeds the full per-aggregate audit output. Each aggregate has its ### `src\ai_client.py` (16 producers) -- `src.ai_client._build_chunked_context_blocks` (line 1281) -- `src.ai_client._send_cli_round_result` (line 1746) -- `src.ai_client._get_anthropic_tools` (line 664) -- `src.ai_client.get_gemini_cache_stats` (line 1604) -- `src.ai_client._content_block_to_dict` (line 1200) -- `src.ai_client._strip_private_keys` (line 1464) -- `src.ai_client._add_bleed_derived` (line 3332) -- `src.ai_client._parse_tool_args_result` (line 741) - `src.ai_client._extract_dashscope_tool_calls` (line 2754) -- `src.ai_client.get_comms_log` (line 273) -- `src.ai_client.get_token_stats` (line 3185) - `src.ai_client._dashscope_call` (line 2716) -- `src.ai_client._load_credentials` (line 282) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._get_anthropic_tools` (line 664) - `src.ai_client._get_deepseek_tools` (line 1194) - `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client.get_token_stats` (line 3185) - `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) ### `src\api_hook_client.py` (39 producers) -- `src.api_hook_client.get_gui_diagnostics` (line 311) -- `src.api_hook_client.clear_events` (line 129) -- `src.api_hook_client.get_mma_workers` (line 546) -- `src.api_hook_client.get_startup_timeline` (line 353) -- `src.api_hook_client.get_session` (line 502) -- `src.api_hook_client.get_status` (line 105) -- `src.api_hook_client._make_request` (line 65) -- `src.api_hook_client.right_click` (line 237) -- `src.api_hook_client.trigger_patch` (line 274) -- `src.api_hook_client.select_tab` (line 263) -- `src.api_hook_client.click` (line 223) -- `src.api_hook_client.get_gui_state` (line 165) -- `src.api_hook_client.post_project` (line 473) -- `src.api_hook_client.get_patch_status` (line 295) -- `src.api_hook_client.push_event` (line 156) -- `src.api_hook_client.reject_patch` (line 288) -- `src.api_hook_client.get_project` (line 367) -- `src.api_hook_client.get_performance` (line 318) -- `src.api_hook_client.select_list_item` (line 256) -- `src.api_hook_client.get_warmup_status` (line 325) -- `src.api_hook_client.get_project_switch_status` (line 374) -- `src.api_hook_client.post_session` (line 117) -- `src.api_hook_client.get_system_telemetry` (line 524) -- `src.api_hook_client.wait_for_project_switch` (line 389) -- `src.api_hook_client.get_events` (line 124) -- `src.api_hook_client.get_gui_health` (line 434) -- `src.api_hook_client.apply_patch` (line 281) - `src.api_hook_client.get_warmup_wait` (line 332) -- `src.api_hook_client.get_warmup_canaries` (line 342) -- `src.api_hook_client.get_financial_metrics` (line 520) -- `src.api_hook_client.post_gui` (line 149) -- `src.api_hook_client.drag` (line 230) -- `src.api_hook_client.post_project` (line 470) -- `src.api_hook_client.get_node_status` (line 532) -- `src.api_hook_client.get_io_pool_status` (line 420) - `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_status` (line 105) - `src.api_hook_client.get_context_state` (line 491) -- `src.api_hook_client.get_mma_status` (line 539) - `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.get_financial_metrics` (line 520) ### `src\app_controller.py` (30 producers) -- `src.app_controller._api_get_api_project` (line 188) -- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller.wait` (line 5205) +- `src.app_controller._pending_mma_spawn` (line 2772) - `src.app_controller._offload_entry_payload` (line 4240) -- `src.app_controller.generate` (line 2868) -- `src.app_controller.token_stats` (line 2898) -- `src.app_controller._api_get_session` (line 374) -- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) - `src.app_controller.load_config` (line 5142) -- `src.app_controller.pending_actions` (line 2874) -- `src.app_controller._api_get_performance` (line 195) -- `src.app_controller._api_get_context` (line 398) -- `src.app_controller.status` (line 2865) -- `src.app_controller._api_generate` (line 221) -- `src.app_controller._api_status` (line 209) -- `src.app_controller._api_token_stats` (line 417) -- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) - `src.app_controller.get_context` (line 2892) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.status` (line 2865) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_status` (line 209) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.get_diagnostics` (line 2862) - `src.app_controller.get_session_insights` (line 3049) - `src.app_controller._pending_mma_approval` (line 2776) -- `src.app_controller.wait` (line 5205) -- `src.app_controller.get_session` (line 2883) -- `src.app_controller._api_get_mma_status` (line 144) -- `src.app_controller._api_pending_actions` (line 335) -- `src.app_controller.get_mma_status` (line 2835) -- `src.app_controller._pending_mma_spawn` (line 2772) -- `src.app_controller.get_performance` (line 2856) -- `src.app_controller.get_diagnostics` (line 2862) -- `src.app_controller._api_get_diagnostics` (line 202) - `src.app_controller.get_api_session` (line 2847) -- `src.app_controller.get_gui_state` (line 2829) ### `src\models.py` (23 producers) -- `src.models.to_dict` (line 441) -- `src.models.to_dict` (line 1024) -- `src.models.to_dict` (line 737) -- `src.models.to_dict` (line 618) -- `src.models.to_dict` (line 486) -- `src.models.to_dict` (line 886) -- `src.models.to_dict` (line 971) -- `src.models.parse_history_entries` (line 214) - `src.models.to_dict` (line 646) - `src.models.to_dict` (line 406) -- `src.models.to_dict` (line 701) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 938) +- `src.models.to_dict` (line 1059) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 1000) - `src.models.to_dict` (line 672) - `src.models.to_dict` (line 355) -- `src.models.to_dict` (line 1059) -- `src.models.to_dict` (line 794) -- `src.models._load_config_from_disk` (line 186) -- `src.models.to_dict` (line 855) -- `src.models.to_dict` (line 1000) -- `src.models.to_dict` (line 938) -- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 486) - `src.models.to_dict` (line 913) - `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 886) - `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 618) +- `src.models.to_dict` (line 701) ### `src\project_manager.py` (8 producers) -- `src.project_manager.flat_config` (line 267) -- `src.project_manager.str_to_entry` (line 75) -- `src.project_manager.default_discussion` (line 117) -- `src.project_manager.load_project` (line 186) - `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.str_to_entry` (line 75) - `src.project_manager.default_project` (line 123) - `src.project_manager.migrate_from_legacy_config` (line 253) -- `src.project_manager.load_history` (line 209) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) ## Consumers (66) @@ -461,231 +4633,215 @@ This section embeds the full per-aggregate audit output. Each aggregate has its ### `src\ai_client.py` (29 consumers) -- `src.ai_client._send_anthropic` (line 1405) -- `src.ai_client._add_history_cache_breakpoint` (line 1299) -- `src.ai_client._append_comms` (line 257) -- `src.ai_client._repair_deepseek_history` (line 2138) -- `src.ai_client._dashscope_call` (line 2716) -- `src.ai_client._send_grok` (line 2530) -- `src.ai_client._trim_minimax_history` (line 2482) -- `src.ai_client._send_gemini` (line 1802) -- `src.ai_client._repair_minimax_history` (line 2462) -- `src.ai_client._repair_anthropic_history` (line 1381) -- `src.ai_client._pre_dispatch` (line 2089) -- `src.ai_client._strip_stale_file_refreshes` (line 1253) -- `src.ai_client.send` (line 3208) -- `src.ai_client._send_minimax` (line 2616) -- `src.ai_client._send_llama_native` (line 2958) -- `src.ai_client._create_gemini_cache_result` (line 1706) -- `src.ai_client._send_qwen` (line 2773) -- `src.ai_client._trim_anthropic_history` (line 1353) -- `src.ai_client._strip_private_keys` (line 1464) -- `src.ai_client._estimate_prompt_tokens` (line 1243) -- `src.ai_client.ollama_chat` (line 2938) -- `src.ai_client._execute_single_tool_call_async` (line 945) -- `src.ai_client._send_deepseek` (line 2165) -- `src.ai_client._send_llama` (line 2858) -- `src.ai_client._add_bleed_derived` (line 3332) -- `src.ai_client._send_gemini_cli` (line 2019) - `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client._repair_anthropic_history` (line 1381) - `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._append_comms` (line 257) - `src.ai_client._estimate_message_tokens` (line 1218) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.send` (line 3208) ### `src\app_controller.py` (5 consumers) -- `src.app_controller._refresh_api_metrics` (line 3074) -- `src.app_controller._on_comms_entry` (line 4282) -- `src.app_controller._start_track_logic` (line 4721) - `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._on_comms_entry` (line 4282) - `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._start_track_logic` (line 4721) ### `src\models.py` (22 consumers) -- `src.models.from_dict` (line 575) -- `src.models.from_dict` (line 656) - `src.models.from_dict` (line 920) -- `src.models.from_dict` (line 416) -- `src.models.from_dict` (line 1072) -- `src.models.from_dict` (line 295) -- `src.models.from_dict` (line 506) - `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 506) - `src.models.from_dict` (line 814) -- `src.models.from_dict` (line 378) - `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 378) - `src.models.from_dict` (line 1038) - `src.models.from_dict` (line 1007) -- `src.models.from_dict` (line 712) -- `src.models._save_config_to_disk` (line 199) -- `src.models.from_dict` (line 866) - `src.models.from_dict` (line 747) - `src.models.from_dict` (line 683) -- `src.models.from_dict` (line 630) +- `src.models.from_dict` (line 712) +- `src.models.from_dict` (line 866) - `src.models.from_dict` (line 454) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 630) +- `src.models._save_config_to_disk` (line 199) - `src.models.from_dict` (line 949) - `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 1072) ### `src\project_manager.py` (5 consumers) -- `src.project_manager.migrate_from_legacy_config` (line 253) - `src.project_manager.save_project` (line 229) - `src.project_manager.format_discussion` (line 69) - `src.project_manager.entry_to_str` (line 49) - `src.project_manager.flat_config` (line 267) +- `src.project_manager.migrate_from_legacy_config` (line 253) ## Field access matrix -| consumer | _est_tokens | _gemini_cache_text | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _recalculate_session_usage | _start_track_logic_result | _token_history | _token_stats | _topological_sort_tickets_result | _update_cached_stats | active_discussion | active_project_path | active_project_root | ai_status | append | +| consumer | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _token_history | _topological_sort_tickets_result | active_discussion | active_project_path | active_project_root | ai_status | append | config | content | context_files | discussion | encode | engines | |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_refresh_api_metrics` | . | 1 | . | . | . | . | . | . | . | 1 | . | . | 1 | . | 1 | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_add_history_cache_breakpoint` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_append_comms` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | -| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `migrate_from_legacy_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_on_comms_entry` | . | . | 1 | 1 | 1 | . | . | 4 | 4 | . | . | 1 | . | . | . | . | . | . | . | . | -| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_trim_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_start_track_logic` | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | . | 1 | . | -| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | -| `_pre_dispatch` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `send` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_start_track_logic_result` | . | . | . | . | . | 2 | 2 | . | . | . | . | . | . | 1 | . | 1 | 1 | 1 | 4 | . | -| `_send_minimax` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_estimate_prompt_tokens` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_build_files_section_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | | `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | 1 | 1 | 1 | . | . | 4 | 4 | 1 | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | | `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_estimate_message_tokens` | 1 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | 2 | 2 | . | . | . | 1 | 1 | 1 | 1 | 4 | . | 1 | . | 1 | . | . | 1 | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_estimate_prompt_tokens` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -_... 35 more fields_ +_... 23 more fields_ ## Access pattern **Dominant pattern:** whole_struct -**Evidence count:** 66 +**Evidence count:** 50 **Per-function pattern distribution:** -- `whole_struct`: 35 functions (53%) -- `mixed`: 26 functions (39%) -- `field_by_field`: 5 functions (8%) +- `whole_struct`: 28 functions (56%) +- `mixed`: 18 functions (36%) +- `field_by_field`: 4 functions (8%) -## SSDL Sketch for `Metadata` +## SSDL Sketch for `CommsLogEntry` ``` -[Q:Metadata entry-point] -> [Q:PCG lookup] - -> [1: build_markdown_from_items] [B:check] (branches=9) - -> [2: _send_anthropic] [B:is None?] (branches=40) [N:safe] - -> [3: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] +[Q:CommsLogEntry entry-point] -> [Q:PCG lookup] + -> [1: _invalidate_token_estimate] [B:check] (branches=0) + -> [2: from_dict] [B:check] (branches=0) + -> [3: build_markdown_from_items] [B:check] (branches=9) -> [4: from_dict] [B:check] (branches=0) - -> [5: _add_history_cache_breakpoint] [B:check] (branches=5) - -> [6: _append_comms] [B:is None?] (branches=1) [N:safe] - -> [7: from_dict] [B:check] (branches=0) + -> [5: _create_gemini_cache_result] [B:check] (branches=3) + -> [6: _send_grok] [B:check] (branches=14) + -> [7: _strip_private_keys] [B:check] (branches=0) -> [8: from_dict] [B:check] (branches=0) - -> [9: _repair_deepseek_history] [B:check] (branches=6) - -> [10: _dashscope_call] [B:check] (branches=5) + -> [9: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [10: from_dict] [B:check] (branches=0) -> [11: from_dict] [B:check] (branches=0) - -> [12: _send_grok] [B:check] (branches=14) + -> [12: _send_gemini] [B:is None?] (branches=75) [N:safe] -> [13: from_dict] [B:check] (branches=0) -> [14: from_dict] [B:check] (branches=0) - -> [15: build_tier3_context] [B:check] (branches=50) - -> [16: build_markdown_no_history] [B:check] (branches=0) - -> [17: from_dict] [B:check] (branches=0) - -> [18: from_dict] [B:check] (branches=0) - -> [19: migrate_from_legacy_config] [B:check] (branches=2) - -> [20: from_dict] [B:check] (branches=0) - -> [21: _on_comms_entry] [B:check] (branches=32) - -> [22: run] [B:check] (branches=1) - -> [23: _trim_minimax_history] [B:check] (branches=8) - -> [24: _start_track_logic] [B:check] (branches=1) - -> [25: save_project] [B:is None?] (branches=7) [N:safe] - -> [26: _send_gemini] [B:is None?] (branches=75) [N:safe] - -> [27: from_dict] [B:check] (branches=0) - -> [28: format_discussion] [B:check] (branches=0) - -> [29: _repair_minimax_history] [B:check] (branches=10) - -> [30: from_dict] [B:check] (branches=0) - -> [31: _repair_anthropic_history] [B:check] (branches=6) - -> [32: _pre_dispatch] [B:check] (branches=8) - -> [33: _strip_stale_file_refreshes] [B:check] (branches=12) - -> [34: send] [B:check] (branches=19) - -> [35: _offload_entry_payload] [B:check] (branches=10) - -> [36: _start_track_logic_result] [B:check] (branches=10) - -> [37: _send_minimax] [B:check] (branches=11) - -> [38: _send_llama_native] [B:check] (branches=12) + -> [15: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [16: save_project] [B:is None?] (branches=7) [N:safe] + -> [17: _trim_anthropic_history] [B:check] (branches=13) + -> [18: _send_llama] [B:check] (branches=13) + -> [19: build_tier3_context] [B:check] (branches=50) + -> [20: _offload_entry_payload] [B:check] (branches=10) + -> [21: format_discussion] [B:check] (branches=0) + -> [22: entry_to_str] [B:check] (branches=3) + -> [23: _repair_minimax_history] [B:check] (branches=10) + -> [24: from_dict] [B:check] (branches=0) + -> [25: from_dict] [B:check] (branches=0) + -> [26: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [27: _send_deepseek] [B:check] (branches=71) + -> [28: _add_bleed_derived] [B:check] (branches=0) + -> [29: from_dict] [B:check] (branches=0) + -> [30: build_markdown_no_history] [B:check] (branches=0) + -> [31: flat_config] [B:check] (branches=2) + -> [32: _send_llama_native] [B:check] (branches=12) + -> [33: ollama_chat] [B:check] (branches=3) + -> [34: _send_qwen] [B:check] (branches=9) + -> [35: _on_comms_entry] [B:check] (branches=32) + -> [36: from_dict] [B:check] (branches=0) + -> [37: from_dict] [B:check] (branches=0) + -> [38: _repair_deepseek_history] [B:check] (branches=6) -> [39: from_dict] [B:check] (branches=0) - -> [40: _create_gemini_cache_result] [B:check] (branches=3) - -> [41: entry_to_str] [B:check] (branches=3) + -> [40: from_dict] [B:check] (branches=0) + -> [41: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] -> [42: from_dict] [B:check] (branches=0) - -> [43: from_dict] [B:check] (branches=0) - -> [44: _save_config_to_disk] [B:check] (branches=1) - -> [45: _send_qwen] [B:check] (branches=9) - -> [46: from_dict] [B:check] (branches=0) - -> [47: from_dict] [B:check] (branches=0) - -> [48: _trim_anthropic_history] [B:check] (branches=13) - -> [49: _strip_private_keys] [B:check] (branches=0) + -> [43: _repair_anthropic_history] [B:check] (branches=6) + -> [44: _strip_cache_controls] [B:check] (branches=4) + -> [45: run] [B:check] (branches=1) + -> [46: _save_config_to_disk] [B:check] (branches=1) + -> [47: _dashscope_call] [B:check] (branches=5) + -> [48: _start_track_logic_result] [B:check] (branches=10) + -> [49: from_dict] [B:check] (branches=0) -> [50: _estimate_prompt_tokens] [B:check] (branches=2) - -> [51: ollama_chat] [B:check] (branches=3) - -> [52: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] - -> [53: flat_config] [B:check] (branches=2) - -> [54: _send_deepseek] [B:check] (branches=71) - -> [55: _send_llama] [B:check] (branches=13) - -> [56: _add_bleed_derived] [B:check] (branches=0) - -> [57: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] - -> [58: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] - -> [59: from_dict] [B:check] (branches=0) - -> [60: from_dict] [B:check] (branches=0) - -> [61: _invalidate_token_estimate] [B:check] (branches=0) + -> [51: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [52: from_dict] [B:check] (branches=0) + -> [53: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [54: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [55: _pre_dispatch] [B:check] (branches=8) + -> [56: from_dict] [B:check] (branches=0) + -> [57: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [58: _trim_minimax_history] [B:check] (branches=8) + -> [59: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [60: _start_track_logic] [B:check] (branches=1) + -> [61: from_dict] [B:check] (branches=0) -> [62: from_dict] [B:check] (branches=0) - -> [63: _strip_cache_controls] [B:check] (branches=4) - -> [64: from_dict] [B:check] (branches=0) - -> [65: from_dict] [B:check] (branches=0) - -> [66: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [63: from_dict] [B:check] (branches=0) + -> [64: migrate_from_legacy_config] [B:check] (branches=2) + -> [65: _send_minimax] [B:check] (branches=11) + -> [66: send] [B:check] (branches=19) -> [T:done] ``` @@ -697,8 +4853,8 @@ _... 35 more fields_ - **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. - Effective codepaths: 40140116231395706750390 -> 40140116231395706750372 -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `metadata_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 173 field-check branches to 1 cache lookup. - - Effective codepaths: 40140116231395706750390 -> 173 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `commslogentry_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 135 field-check branches to 1 cache lookup. + - Effective codepaths: 40140116231395706750390 -> 135 - **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. - Effective codepaths: 40140116231395706750390 -> 66 @@ -725,65 +4881,60 @@ _... 35 more fields_ ## Type alias coverage -**Summary:** 173 sites; 0 typed (0%); 173 untyped (100%) +**Summary:** 135 sites; 0 typed (0%); 135 untyped (100%) | metric | value | |---|---| -| total field-access sites | 173 | +| total field-access sites | 135 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 173 | +| untyped sites (wildcard) | 135 | ## Cross-audit findings -| bucket | audit script | site count | example file | example line | note | -|---|---|---|---|---|---| -| optional_in_baseline | `audit_optional_in_3_files` | 76 | `src\ai_client.py` | 159 | 76 sites | +_(no cross-audit findings mapped to this aggregate)_ ## Decomposition cost -**Current cost estimate:** 720 us/turn +**Current cost estimate:** 470 us/turn **Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn +**Unify savings:** 70 us/turn **Recommended direction:** hold -**Rationale:** Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. -**Struct field count (estimated):** 10 +**Rationale:** CommsLogEntry: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +**Struct field count (estimated):** 5 **Struct frozen:** True ## Struct shape (inferred from producer returns) | field | access count | access pattern | |---|---|---| -| `content` | 21 | hot | -| `marker` | 21 | hot | -| `get` | 10 | hot | +| `content` | 16 | hot | +| `marker` | 16 | hot | +| `get` | 7 | hot | | `append` | 3 | hot | -| `pop` | 3 | hot | -| `session_usage` | 2 | used | +| `pop` | 2 | used | | `files` | 2 | used | -| `ai_status` | 2 | used | -| `config` | 2 | used | -| `latency` | 1 | used | -| `_recalculate_session_usage` | 1 | used | -| `_token_stats` | 1 | used | -| `_gemini_cache_text` | 1 | used | -| `vendor_quota` | 1 | used | -| `last_error` | 1 | used | -| `error` | 1 | used | -| `_update_cached_stats` | 1 | used | -| `usage` | 1 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `estimated_prompt_tokens` | 1 | used | +| `max_prompt_tokens` | 1 | used | +| `utilization_pct` | 1 | used | +| `headroom` | 1 | used | +| `would_trim` | 1 | used | +| `sys_tokens` | 1 | used | +| `tool_tokens` | 1 | used | +| `history_tokens` | 1 | used | | `local_ts` | 1 | used | | `_offload_entry_payload` | 1 | used | | `ui_auto_add_history` | 1 | used | | `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | | `_pending_history_adds_lock` | 1 | used | | `_token_history` | 1 | used | | `_pending_comms` | 1 | used | | `_pending_history_adds` | 1 | used | +| `items` | 1 | used | | `output` | 1 | used | -| `_start_track_logic_result` | 1 | used | -| `discussion` | 1 | used | -| `encode` | 1 | used | -| `search` | 1 | used | +| `ai_status` | 1 | used | | `context_files` | 1 | used | | `_pending_gui_tasks_lock` | 1 | used | | `_topological_sort_tickets_result` | 1 | used | @@ -794,20 +4945,11 @@ _... 35 more fields_ | `active_discussion` | 1 | used | | `submit_io` | 1 | used | | `tracks` | 1 | used | +| `config` | 1 | used | | `mma_tier_usage` | 1 | used | | `_pending_gui_tasks` | 1 | used | | `mma_step_mode` | 1 | used | | `active_project_path` | 1 | used | -| `items` | 1 | used | -| `estimated_prompt_tokens` | 1 | used | -| `max_prompt_tokens` | 1 | used | -| `utilization_pct` | 1 | used | -| `headroom` | 1 | used | -| `would_trim` | 1 | used | -| `sys_tokens` | 1 | used | -| `tool_tokens` | 1 | used | -| `history_tokens` | 1 | used | -| `_est_tokens` | 1 | used | ## Optimization candidates @@ -815,7 +4957,7 @@ _(no optimization candidates generated)_ ## Verdict -Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +CommsLogEntry: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix @@ -823,726 +4965,66 @@ Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10 | function | pattern | field_accesses | confidence | |---|---|---|---| -| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | -| `src.ai_client._send_anthropic` | `whole_struct` | | low | -| `src.app_controller._refresh_api_metrics` | `field_by_field` | `latency`=1, `_recalculate_session_usage`=1, `_token_stats`=1, `get`=2, `_gemini_cache_text`=1, `vendor_quota`=1, `last_error`=1, `error`=2, `_update_cached_stats`=1, `session_usage`=2 (+1 more) | high | +| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | | `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._add_history_cache_breakpoint` | `whole_struct` | | low | -| `src.ai_client._append_comms` | `whole_struct` | | low | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | +| `src.ai_client._send_grok` | `whole_struct` | | low | +| `src.ai_client._strip_private_keys` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_anthropic` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | +| `src.ai_client._send_llama` | `whole_struct` | | low | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | +| `src.ai_client._send_deepseek` | `whole_struct` | | low | +| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._send_qwen` | `whole_struct` | | low | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | | `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | | `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | | `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | -| `src.ai_client._dashscope_call` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._send_grok` | `whole_struct` | | low | | `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | | `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.aggregate.build_tier3_context` | `whole_struct` | | low | -| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.project_manager.migrate_from_legacy_config` | `whole_struct` | `get`=2 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | -| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | -| `src.ai_client._trim_minimax_history` | `whole_struct` | `pop`=4 | high | -| `src.app_controller._start_track_logic` | `mixed` | `_start_track_logic_result`=1, `ai_status`=1 | high | -| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | -| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.project_manager.format_discussion` | `whole_struct` | | low | -| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | | `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | | `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | -| `src.ai_client._pre_dispatch` | `whole_struct` | | low | -| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | -| `src.ai_client.send` | `mixed` | `config`=1, `search`=1 | high | -| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | -| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | -| `src.ai_client._send_minimax` | `whole_struct` | | low | -| `src.ai_client._send_llama_native` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | -| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models._save_config_to_disk` | `whole_struct` | | low | -| `src.ai_client._send_qwen` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | -| `src.ai_client._strip_private_keys` | `whole_struct` | | low | -| `src.ai_client._estimate_prompt_tokens` | `whole_struct` | | low | -| `src.ai_client.ollama_chat` | `whole_struct` | | low | -| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | -| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | -| `src.ai_client._send_deepseek` | `whole_struct` | | low | -| `src.ai_client._send_llama` | `whole_struct` | | low | -| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | -| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | -| `src.aggregate._build_files_section_from_items` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | | `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | +| `src.models._save_config_to_disk` | `whole_struct` | | low | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | | `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._estimate_message_tokens` | `mixed` | `_est_tokens`=1, `get`=2 | high | +| `src.ai_client._estimate_prompt_tokens` | `whole_struct` | | low | ### Frequency evidence | function | frequency | source | note | |---|---|---|---| -| `src.models.to_dict` | `per_turn` | `static_analysis` | producer from src\models.py | -| `src.api_hook_client.get_gui_diagnostics` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | -| `src.models.to_dict` | `per_turn` | `static_analysis` | producer from src\models.py | -| `src.app_controller._api_get_api_project` | `per_turn` | `static_analysis` | producer from src\app_controller.py | -| `src.api_hook_client.clear_events` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | - - ---- - - - -### 4.2 FileItems - -**Aggregate kind:** typealias -**Memory dim:** curation -**Is candidate:** False - -## Pipeline summary - -- Producers: 0 -- Consumers: 4 -- Distinct producer fqnames: 0 -- Distinct consumer fqnames: 4 -- Access pattern (aggregate): whole_struct -- Frequency (aggregate): per_turn -- Decomposition direction: hold -- Struct field count (estimated): 5 - -## Producers (0) - -_(none)_ - -## Consumers (4) - -### `src\ai_client.py` (4 consumers) - -- `src.ai_client._build_file_diff_text` (line 1105) -- `src.ai_client.run_with_tool_loop` (line 833) -- `src.ai_client._build_file_context_text` (line 1092) -- `src.ai_client._reread_file_items_result` (line 1056) - -## Field access matrix - -| consumer | append | -|---|---| -| `_build_file_diff_text` | . | -| `run_with_tool_loop` | 2 | -| `_build_file_context_text` | . | -| `_reread_file_items_result` | . | - -## Access pattern - -**Dominant pattern:** whole_struct -**Evidence count:** 4 - -**Per-function pattern distribution:** - -- `whole_struct`: 4 functions (100%) - -## SSDL Sketch for `FileItems` - -``` -[Q:FileItems entry-point] -> [Q:PCG lookup] - -> [1: _build_file_diff_text] [B:check] (branches=6) - -> [2: run_with_tool_loop] [B:is None?] (branches=23) [N:safe] - -> [3: _build_file_context_text] [B:check] (branches=3) - -> [4: _reread_file_items_result] [B:is None?] (branches=5) [N:safe] - -> [T:done] -``` - -**Effective codepaths:** 8388712 (sum of 2^branches across 4 consumers) -**Total branch points:** 37 -**Nil-check functions:** 2 - -**Defusing opportunities:** - -- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. - - Effective codepaths: 8388712 -> 8388708 -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `fileitems_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 2 field-check branches to 1 cache lookup. - - Effective codepaths: 8388712 -> 2 -- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. - - Effective codepaths: 8388712 -> 4 - - -## Frequency - -**Dominant frequency:** per_turn -**Evidence count:** 0 - -## Result coverage - -**Summary:** 0 producers, 4 consumers - -| metric | value | -|---|---| -| total producers | 0 | -| result producers | 0 | -| total consumers | 4 | -| result consumers | 0 | - -## Type alias coverage - -**Summary:** 2 sites; 0 typed (0%); 2 untyped (100%) - -| metric | value | -|---|---| -| total field-access sites | 2 | -| typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 2 | - -## Cross-audit findings - -_(no cross-audit findings mapped to this aggregate)_ - -## Decomposition cost - -**Current cost estimate:** 470 us/turn -**Componentize savings:** 0 us/turn -**Unify savings:** 70 us/turn -**Recommended direction:** hold -**Rationale:** FileItems: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. -**Struct field count (estimated):** 5 -**Struct frozen:** True - -## Struct shape (inferred from producer returns) - -_(no producers; cannot infer shape)_ - -## Optimization candidates - -_(no optimization candidates generated)_ - -## Verdict - -FileItems: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. - -## Evidence appendix - -### Access pattern evidence - -| function | pattern | field_accesses | confidence | -|---|---|---|---| -| `src.ai_client._build_file_diff_text` | `whole_struct` | | low | -| `src.ai_client.run_with_tool_loop` | `whole_struct` | `append`=2 | high | -| `src.ai_client._build_file_context_text` | `whole_struct` | | low | -| `src.ai_client._reread_file_items_result` | `whole_struct` | | low | - - ---- - - - -### 4.3 HistoryMessage - -**Aggregate kind:** typealias -**Memory dim:** discussion -**Is candidate:** False - -## Pipeline summary - -- Producers: 1 -- Consumers: 2 -- Distinct producer fqnames: 1 -- Distinct consumer fqnames: 2 -- Access pattern (aggregate): mixed -- Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data -- Struct field count (estimated): 5 - -## Producers (1) - -### `src\provider_state.py` (1 producer) - -- `src.provider_state.get_all` (line 34) - -## Consumers (2) - -### `src\provider_state.py` (2 consumers) - -- `src.provider_state.append` (line 30) -- `src.provider_state.replace_all` (line 38) - -## Field access matrix - -| consumer | lock | messages | -|---|---|---| -| `append` | 1 | 1 | -| `replace_all` | 1 | 1 | - -## Access pattern - -**Dominant pattern:** mixed -**Evidence count:** 2 - -**Per-function pattern distribution:** - -- `mixed`: 2 functions (100%) - -## SSDL Sketch for `HistoryMessage` - -``` -[Q:HistoryMessage entry-point] -> [Q:PCG lookup] - -> [1: append] [B:check] (branches=1) - -> [2: replace_all] [B:check] (branches=1) - -> [T:done] -``` - -**Effective codepaths:** 4 (sum of 2^branches across 2 consumers) -**Total branch points:** 2 -**Nil-check functions:** 0 - -**Defusing opportunities:** - -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `historymessage_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 4 field-check branches to 1 cache lookup. - - Effective codepaths: 4 -> 4 - - -## Frequency - -**Dominant frequency:** per_turn -**Evidence count:** 1 - -**Per-function frequency distribution:** - -- `per_turn`: 1 functions - -## Result coverage - -**Summary:** 1 producers, 2 consumers - -| metric | value | -|---|---| -| total producers | 1 | -| result producers | 1 | -| total consumers | 2 | -| result consumers | 0 | - -## Type alias coverage - -**Summary:** 4 sites; 0 typed (0%); 4 untyped (100%) - -| metric | value | -|---|---| -| total field-access sites | 4 | -| typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 4 | - -## Cross-audit findings - -_(no cross-audit findings mapped to this aggregate)_ - -## Decomposition cost - -**Current cost estimate:** 470 us/turn -**Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. -**Struct field count (estimated):** 5 -**Struct frozen:** True - -## Struct shape (inferred from producer returns) - -| field | access count | access pattern | -|---|---|---| -| `lock` | 2 | used | -| `messages` | 2 | used | - -## Optimization candidates - -_(no optimization candidates generated)_ - -## Verdict - -HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. - -## Evidence appendix - -### Access pattern evidence - -| function | pattern | field_accesses | confidence | -|---|---|---|---| -| `src.provider_state.append` | `mixed` | `lock`=1, `messages`=1 | high | -| `src.provider_state.replace_all` | `mixed` | `lock`=1, `messages`=1 | high | - -### Frequency evidence - -| function | frequency | source | note | -|---|---|---|---| -| `src.provider_state.get_all` | `per_turn` | `static_analysis` | producer from src\provider_state.py | - - ---- - - - -### 4.4 ToolCall - -**Aggregate kind:** typealias -**Memory dim:** control -**Is candidate:** False - -## Pipeline summary - -- Producers: 1 -- Consumers: 1 -- Distinct producer fqnames: 1 -- Distinct consumer fqnames: 1 -- Access pattern (aggregate): whole_struct -- Frequency (aggregate): per_turn -- Decomposition direction: hold -- Struct field count (estimated): 5 - -## Producers (1) - -### `src\openai_compatible.py` (1 producer) - -- `src.openai_compatible._to_typed_tool_call` (line 43) - -## Consumers (1) - -### `src\openai_compatible.py` (1 consumer) - -- `src.openai_compatible._to_dict_tool_call` (line 54) - -## Field access matrix - -| consumer | to_dict | -|---|---| -| `_to_dict_tool_call` | 1 | - -## Access pattern - -**Dominant pattern:** whole_struct -**Evidence count:** 1 - -**Per-function pattern distribution:** - -- `whole_struct`: 1 functions (100%) - -## SSDL Sketch for `ToolCall` - -``` -[Q:ToolCall entry-point] -> [Q:PCG lookup] - -> [1: _to_dict_tool_call] [B:check] (branches=0) - -> [T:done] -``` - -**Effective codepaths:** 1 (sum of 2^branches across 1 consumers) -**Total branch points:** 0 -**Nil-check functions:** 0 - -**Defusing opportunities:** - -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `toolcall_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 1 field-check branches to 1 cache lookup. - - Effective codepaths: 1 -> 1 - - -## Frequency - -**Dominant frequency:** per_turn -**Evidence count:** 1 - -**Per-function frequency distribution:** - -- `per_turn`: 1 functions - -## Result coverage - -**Summary:** 1 producers, 1 consumers - -| metric | value | -|---|---| -| total producers | 1 | -| result producers | 1 | -| total consumers | 1 | -| result consumers | 0 | - -## Type alias coverage - -**Summary:** 1 sites; 0 typed (0%); 1 untyped (100%) - -| metric | value | -|---|---| -| total field-access sites | 1 | -| typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 1 | - -## Cross-audit findings - -_(no cross-audit findings mapped to this aggregate)_ - -## Decomposition cost - -**Current cost estimate:** 470 us/turn -**Componentize savings:** 0 us/turn -**Unify savings:** 70 us/turn -**Recommended direction:** hold -**Rationale:** ToolCall: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. -**Struct field count (estimated):** 5 -**Struct frozen:** True - -## Struct shape (inferred from producer returns) - -| field | access count | access pattern | -|---|---|---| -| `to_dict` | 1 | used | - -## Optimization candidates - -_(no optimization candidates generated)_ - -## Verdict - -ToolCall: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. - -## Evidence appendix - -### Access pattern evidence - -| function | pattern | field_accesses | confidence | -|---|---|---|---| -| `src.openai_compatible._to_dict_tool_call` | `whole_struct` | `to_dict`=1 | high | - -### Frequency evidence - -| function | frequency | source | note | -|---|---|---|---| -| `src.openai_compatible._to_typed_tool_call` | `per_turn` | `static_analysis` | producer from src\openai_compatible.py | - - ---- - - - -### 4.5 CommsLog - -**Aggregate kind:** typealias -**Memory dim:** discussion -**Is candidate:** False - -## Pipeline summary - -- Producers: 0 -- Consumers: 0 -- Distinct producer fqnames: 0 -- Distinct consumer fqnames: 0 -- Access pattern (aggregate): mixed -- Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data -- Struct field count (estimated): 5 - -## Producers (0) - -_(none)_ - -## Consumers (0) - -_(none)_ - -## Field access matrix - -_(no field accesses detected)_ - -## Access pattern - -**Dominant pattern:** mixed -**Evidence count:** 0 - -## SSDL Sketch for `CommsLog` - -``` -[Q:CommsLog entry-point] -> [Q:PCG lookup] - -> [T:done] -``` - -**Effective codepaths:** 0 (sum of 2^branches across 0 consumers) -**Total branch points:** 0 -**Nil-check functions:** 0 - -**Defusing opportunities:** - -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `commslog_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. - - Effective codepaths: 0 -> 1 - - -## Frequency - -**Dominant frequency:** per_turn -**Evidence count:** 0 - -## Result coverage - -**Summary:** 0 producers, 0 consumers - -| metric | value | -|---|---| -| total producers | 0 | -| result producers | 0 | -| total consumers | 0 | -| result consumers | 0 | - -## Type alias coverage - -**Summary:** 0 sites - -| metric | value | -|---|---| -| total field-access sites | 0 | -| typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 0 | - -## Cross-audit findings - -_(no cross-audit findings mapped to this aggregate)_ - -## Decomposition cost - -**Current cost estimate:** 470 us/turn -**Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** CommsLog: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. -**Struct field count (estimated):** 5 -**Struct frozen:** True - -## Struct shape (inferred from producer returns) - -_(no producers; cannot infer shape)_ - -## Optimization candidates - -_(no optimization candidates generated)_ - -## Verdict - -CommsLog: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. - -## Evidence appendix - - ---- - - - -### 4.6 CommsLogEntry - -**Aggregate kind:** typealias -**Memory dim:** discussion -**Is candidate:** False - -## Pipeline summary - -- Producers: 0 -- Consumers: 0 -- Distinct producer fqnames: 0 -- Distinct consumer fqnames: 0 -- Access pattern (aggregate): mixed -- Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data -- Struct field count (estimated): 5 - -## Producers (0) - -_(none)_ - -## Consumers (0) - -_(none)_ - -## Field access matrix - -_(no field accesses detected)_ - -## Access pattern - -**Dominant pattern:** mixed -**Evidence count:** 0 - -## SSDL Sketch for `CommsLogEntry` - -``` -[Q:CommsLogEntry entry-point] -> [Q:PCG lookup] - -> [T:done] -``` - -**Effective codepaths:** 0 (sum of 2^branches across 0 consumers) -**Total branch points:** 0 -**Nil-check functions:** 0 - -**Defusing opportunities:** - -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `commslogentry_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. - - Effective codepaths: 0 -> 1 - - -## Frequency - -**Dominant frequency:** per_turn -**Evidence count:** 0 - -## Result coverage - -**Summary:** 0 producers, 0 consumers - -| metric | value | -|---|---| -| total producers | 0 | -| result producers | 0 | -| total consumers | 0 | -| result consumers | 0 | - -## Type alias coverage - -**Summary:** 0 sites - -| metric | value | -|---|---| -| total field-access sites | 0 | -| typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 0 | - -## Cross-audit findings - -_(no cross-audit findings mapped to this aggregate)_ - -## Decomposition cost - -**Current cost estimate:** 470 us/turn -**Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** CommsLogEntry: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. -**Struct field count (estimated):** 5 -**Struct frozen:** True - -## Struct shape (inferred from producer returns) - -_(no producers; cannot infer shape)_ - -## Optimization candidates - -_(no optimization candidates generated)_ - -## Verdict - -CommsLogEntry: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. - -## Evidence appendix +| `src.ai_client._extract_dashscope_tool_calls` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller.wait` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.ai_client._dashscope_call` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | --- @@ -1557,74 +5039,419 @@ CommsLogEntry: access_pattern=mixed, frequency=per_turn, struct_field_count=5, s ## Pipeline summary -- Producers: 0 -- Consumers: 0 -- Distinct producer fqnames: 0 -- Distinct consumer fqnames: 0 -- Access pattern (aggregate): mixed +- Producers: 117 +- Consumers: 66 +- Distinct producer fqnames: 96 +- Distinct consumer fqnames: 46 +- Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data +- Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (0) +## Producers (117) -_(none)_ +### `src\aggregate.py` (1 producer) -## Consumers (0) +- `src.aggregate.build_file_items` (line 158) -_(none)_ +### `src\ai_client.py` (16 producers) + +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) + +### `src\api_hook_client.py` (39 producers) + +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\app_controller.py` (30 producers) + +- `src.app_controller.wait` (line 5205) +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.status` (line 2865) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_status` (line 209) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.get_api_session` (line 2847) + +### `src\models.py` (23 producers) + +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 938) +- `src.models.to_dict` (line 1059) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 1000) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 618) +- `src.models.to_dict` (line 701) + +### `src\project_manager.py` (8 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) + +## Consumers (66) + +### `src\aggregate.py` (5 consumers) + +- `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.run` (line 479) +- `src.aggregate._build_files_section_from_items` (line 300) + +### `src\ai_client.py` (29 consumers) + +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._estimate_message_tokens` (line 1218) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.send` (line 3208) + +### `src\app_controller.py` (5 consumers) + +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._on_comms_entry` (line 4282) +- `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._start_track_logic` (line 4721) + +### `src\models.py` (22 consumers) + +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 506) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 378) +- `src.models.from_dict` (line 1038) +- `src.models.from_dict` (line 1007) +- `src.models.from_dict` (line 747) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.from_dict` (line 866) +- `src.models.from_dict` (line 454) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 630) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 949) +- `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 1072) + +### `src\project_manager.py` (5 consumers) + +- `src.project_manager.save_project` (line 229) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.migrate_from_legacy_config` (line 253) ## Field access matrix -_(no field accesses detected)_ +| consumer | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _token_history | _topological_sort_tickets_result | active_discussion | active_project_path | active_project_root | ai_status | append | config | content | context_files | discussion | encode | engines | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | 1 | 1 | 1 | . | . | 4 | 4 | 1 | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | 2 | 2 | . | . | . | 1 | 1 | 1 | 1 | 4 | . | 1 | . | 1 | . | . | 1 | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_estimate_prompt_tokens` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | + +_... 23 more fields_ ## Access pattern -**Dominant pattern:** mixed -**Evidence count:** 0 +**Dominant pattern:** whole_struct +**Evidence count:** 50 + +**Per-function pattern distribution:** + +- `whole_struct`: 28 functions (56%) +- `mixed`: 18 functions (36%) +- `field_by_field`: 4 functions (8%) ## SSDL Sketch for `FileItem` ``` [Q:FileItem entry-point] -> [Q:PCG lookup] + -> [1: _invalidate_token_estimate] [B:check] (branches=0) + -> [2: from_dict] [B:check] (branches=0) + -> [3: build_markdown_from_items] [B:check] (branches=9) + -> [4: from_dict] [B:check] (branches=0) + -> [5: _create_gemini_cache_result] [B:check] (branches=3) + -> [6: _send_grok] [B:check] (branches=14) + -> [7: _strip_private_keys] [B:check] (branches=0) + -> [8: from_dict] [B:check] (branches=0) + -> [9: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [10: from_dict] [B:check] (branches=0) + -> [11: from_dict] [B:check] (branches=0) + -> [12: _send_gemini] [B:is None?] (branches=75) [N:safe] + -> [13: from_dict] [B:check] (branches=0) + -> [14: from_dict] [B:check] (branches=0) + -> [15: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [16: save_project] [B:is None?] (branches=7) [N:safe] + -> [17: _trim_anthropic_history] [B:check] (branches=13) + -> [18: _send_llama] [B:check] (branches=13) + -> [19: build_tier3_context] [B:check] (branches=50) + -> [20: _offload_entry_payload] [B:check] (branches=10) + -> [21: format_discussion] [B:check] (branches=0) + -> [22: entry_to_str] [B:check] (branches=3) + -> [23: _repair_minimax_history] [B:check] (branches=10) + -> [24: from_dict] [B:check] (branches=0) + -> [25: from_dict] [B:check] (branches=0) + -> [26: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [27: _send_deepseek] [B:check] (branches=71) + -> [28: _add_bleed_derived] [B:check] (branches=0) + -> [29: from_dict] [B:check] (branches=0) + -> [30: build_markdown_no_history] [B:check] (branches=0) + -> [31: flat_config] [B:check] (branches=2) + -> [32: _send_llama_native] [B:check] (branches=12) + -> [33: ollama_chat] [B:check] (branches=3) + -> [34: _send_qwen] [B:check] (branches=9) + -> [35: _on_comms_entry] [B:check] (branches=32) + -> [36: from_dict] [B:check] (branches=0) + -> [37: from_dict] [B:check] (branches=0) + -> [38: _repair_deepseek_history] [B:check] (branches=6) + -> [39: from_dict] [B:check] (branches=0) + -> [40: from_dict] [B:check] (branches=0) + -> [41: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [42: from_dict] [B:check] (branches=0) + -> [43: _repair_anthropic_history] [B:check] (branches=6) + -> [44: _strip_cache_controls] [B:check] (branches=4) + -> [45: run] [B:check] (branches=1) + -> [46: _save_config_to_disk] [B:check] (branches=1) + -> [47: _dashscope_call] [B:check] (branches=5) + -> [48: _start_track_logic_result] [B:check] (branches=10) + -> [49: from_dict] [B:check] (branches=0) + -> [50: _estimate_prompt_tokens] [B:check] (branches=2) + -> [51: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [52: from_dict] [B:check] (branches=0) + -> [53: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [54: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [55: _pre_dispatch] [B:check] (branches=8) + -> [56: from_dict] [B:check] (branches=0) + -> [57: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [58: _trim_minimax_history] [B:check] (branches=8) + -> [59: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [60: _start_track_logic] [B:check] (branches=1) + -> [61: from_dict] [B:check] (branches=0) + -> [62: from_dict] [B:check] (branches=0) + -> [63: from_dict] [B:check] (branches=0) + -> [64: migrate_from_legacy_config] [B:check] (branches=2) + -> [65: _send_minimax] [B:check] (branches=11) + -> [66: send] [B:check] (branches=19) -> [T:done] ``` -**Effective codepaths:** 0 (sum of 2^branches across 0 consumers) -**Total branch points:** 0 -**Nil-check functions:** 0 +**Effective codepaths:** 40140116231395706750390 (sum of 2^branches across 66 consumers) +**Total branch points:** 541 +**Nil-check functions:** 9 **Defusing opportunities:** -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `fileitem_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. - - Effective codepaths: 0 -> 1 +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 40140116231395706750390 -> 40140116231395706750372 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `fileitem_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 135 field-check branches to 1 cache lookup. + - Effective codepaths: 40140116231395706750390 -> 135 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 40140116231395706750390 -> 66 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 0 +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions ## Result coverage -**Summary:** 0 producers, 0 consumers +**Summary:** 96 producers, 46 consumers | metric | value | |---|---| -| total producers | 0 | -| result producers | 0 | -| total consumers | 0 | +| total producers | 96 | +| result producers | 96 | +| total consumers | 46 | | result consumers | 0 | ## Type alias coverage -**Summary:** 0 sites +**Summary:** 135 sites; 0 typed (0%); 135 untyped (100%) | metric | value | |---|---| -| total field-access sites | 0 | +| total field-access sites | 135 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 0 | +| untyped sites (wildcard) | 135 | ## Cross-audit findings @@ -1634,15 +5461,59 @@ _(no cross-audit findings mapped to this aggregate)_ **Current cost estimate:** 470 us/turn **Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** FileItem: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** FileItem: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. **Struct field count (estimated):** 5 **Struct frozen:** True ## Struct shape (inferred from producer returns) -_(no producers; cannot infer shape)_ +| field | access count | access pattern | +|---|---|---| +| `content` | 16 | hot | +| `marker` | 16 | hot | +| `get` | 7 | hot | +| `append` | 3 | hot | +| `pop` | 2 | used | +| `files` | 2 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `estimated_prompt_tokens` | 1 | used | +| `max_prompt_tokens` | 1 | used | +| `utilization_pct` | 1 | used | +| `headroom` | 1 | used | +| `would_trim` | 1 | used | +| `sys_tokens` | 1 | used | +| `tool_tokens` | 1 | used | +| `history_tokens` | 1 | used | +| `local_ts` | 1 | used | +| `_offload_entry_payload` | 1 | used | +| `ui_auto_add_history` | 1 | used | +| `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `items` | 1 | used | +| `output` | 1 | used | +| `ai_status` | 1 | used | +| `context_files` | 1 | used | +| `_pending_gui_tasks_lock` | 1 | used | +| `_topological_sort_tickets_result` | 1 | used | +| `active_project_root` | 1 | used | +| `event_queue` | 1 | used | +| `engines` | 1 | used | +| `project` | 1 | used | +| `active_discussion` | 1 | used | +| `submit_io` | 1 | used | +| `tracks` | 1 | used | +| `config` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_pending_gui_tasks` | 1 | used | +| `mma_step_mode` | 1 | used | +| `active_project_path` | 1 | used | ## Optimization candidates @@ -1650,10 +5521,75 @@ _(no optimization candidates generated)_ ## Verdict -FileItem: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +FileItem: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | +| `src.ai_client._send_grok` | `whole_struct` | | low | +| `src.ai_client._strip_private_keys` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_anthropic` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | +| `src.ai_client._send_llama` | `whole_struct` | | low | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | +| `src.ai_client._send_deepseek` | `whole_struct` | | low | +| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._send_qwen` | `whole_struct` | | low | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | +| `src.models._save_config_to_disk` | `whole_struct` | | low | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._estimate_prompt_tokens` | `whole_struct` | | low | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.ai_client._extract_dashscope_tool_calls` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller.wait` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.ai_client._dashscope_call` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | + --- @@ -1667,74 +5603,130 @@ FileItem: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct ## Pipeline summary -- Producers: 0 -- Consumers: 0 -- Distinct producer fqnames: 0 -- Distinct consumer fqnames: 0 -- Access pattern (aggregate): mixed +- Producers: 7 +- Consumers: 7 +- Distinct producer fqnames: 7 +- Distinct consumer fqnames: 7 +- Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data +- Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (0) +## Producers (7) -_(none)_ +### `src\ai_client.py` (4 producers) -## Consumers (0) +- `src.ai_client._list_gemini_models_result` (line 1626) +- `src.ai_client._list_anthropic_models_result` (line 1317) +- `src.ai_client._list_minimax_models_result` (line 2436) +- `src.ai_client._set_minimax_provider_result` (line 398) -_(none)_ +### `src\gui_2.py` (2 producers) + +- `src.gui_2._render_beads_tab_list_result` (line 8314) +- `src.gui_2._drain_normalize_errors` (line 7417) + +### `src\provider_state.py` (1 producer) + +- `src.provider_state.get_all` (line 34) + +## Consumers (7) + +### `src\app_controller.py` (3 consumers) + +- `src.app_controller._symbol_resolution_result` (line 3506) +- `src.app_controller._topological_sort_tickets_result` (line 4708) +- `src.app_controller._serialize_tool_calls_result` (line 2217) + +### `src\gui_2.py` (1 consumer) + +- `src.gui_2.__init__` (line 7550) + +### `src\project_manager.py` (1 consumer) + +- `src.project_manager.calculate_track_progress` (line 420) + +### `src\provider_state.py` (2 consumers) + +- `src.provider_state.append` (line 30) +- `src.provider_state.replace_all` (line 38) ## Field access matrix -_(no field accesses detected)_ +| consumer | _attr_name | _cached | _module_name | _report_worker_error | lock | messages | +|---|---|---|---|---|---|---| +| `append` | . | . | . | . | 1 | 1 | +| `_symbol_resolution_result` | . | . | . | . | . | . | +| `_topological_sort_tickets_result` | . | . | . | 1 | . | . | +| `replace_all` | . | . | . | . | 1 | 1 | +| `__init__` | 1 | 1 | 1 | . | . | . | +| `_serialize_tool_calls_result` | . | . | . | . | . | . | +| `calculate_track_progress` | . | . | . | . | . | . | ## Access pattern -**Dominant pattern:** mixed -**Evidence count:** 0 +**Dominant pattern:** whole_struct +**Evidence count:** 7 + +**Per-function pattern distribution:** + +- `whole_struct`: 4 functions (57%) +- `mixed`: 2 functions (29%) +- `field_by_field`: 1 functions (14%) ## SSDL Sketch for `History` ``` [Q:History entry-point] -> [Q:PCG lookup] + -> [1: append] [B:check] (branches=1) + -> [2: _symbol_resolution_result] [B:check] (branches=4) + -> [3: _topological_sort_tickets_result] [B:check] (branches=2) + -> [4: replace_all] [B:check] (branches=1) + -> [5: __init__] [B:check] (branches=0) + -> [6: _serialize_tool_calls_result] [B:check] (branches=2) + -> [7: calculate_track_progress] [B:check] (branches=1) -> [T:done] ``` -**Effective codepaths:** 0 (sum of 2^branches across 0 consumers) -**Total branch points:** 0 +**Effective codepaths:** 31 (sum of 2^branches across 7 consumers) +**Total branch points:** 11 **Nil-check functions:** 0 **Defusing opportunities:** -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `history_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. - - Effective codepaths: 0 -> 1 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `history_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 8 field-check branches to 1 cache lookup. + - Effective codepaths: 31 -> 8 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 0 +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions ## Result coverage -**Summary:** 0 producers, 0 consumers +**Summary:** 7 producers, 7 consumers | metric | value | |---|---| -| total producers | 0 | -| result producers | 0 | -| total consumers | 0 | +| total producers | 7 | +| result producers | 7 | +| total consumers | 7 | | result consumers | 0 | ## Type alias coverage -**Summary:** 0 sites +**Summary:** 8 sites; 0 typed (0%); 8 untyped (100%) | metric | value | |---|---| -| total field-access sites | 0 | +| total field-access sites | 8 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 0 | +| untyped sites (wildcard) | 8 | ## Cross-audit findings @@ -1744,15 +5736,22 @@ _(no cross-audit findings mapped to this aggregate)_ **Current cost estimate:** 470 us/turn **Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** History: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** History: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. **Struct field count (estimated):** 5 **Struct frozen:** True ## Struct shape (inferred from producer returns) -_(no producers; cannot infer shape)_ +| field | access count | access pattern | +|---|---|---| +| `lock` | 2 | used | +| `messages` | 2 | used | +| `_report_worker_error` | 1 | used | +| `_module_name` | 1 | used | +| `_attr_name` | 1 | used | +| `_cached` | 1 | used | ## Optimization candidates @@ -1760,10 +5759,32 @@ _(no optimization candidates generated)_ ## Verdict -History: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +History: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.provider_state.append` | `mixed` | `lock`=1, `messages`=1 | high | +| `src.app_controller._symbol_resolution_result` | `whole_struct` | | low | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | `_report_worker_error`=1 | high | +| `src.provider_state.replace_all` | `mixed` | `lock`=1, `messages`=1 | high | +| `src.gui_2.__init__` | `field_by_field` | `_module_name`=1, `_attr_name`=1, `_cached`=1 | high | +| `src.app_controller._serialize_tool_calls_result` | `whole_struct` | | low | +| `src.project_manager.calculate_track_progress` | `whole_struct` | | low | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.gui_2._render_beads_tab_list_result` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.gui_2._drain_normalize_errors` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.ai_client._list_gemini_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.provider_state.get_all` | `per_turn` | `static_analysis` | producer from src\provider_state.py | +| `src.ai_client._list_anthropic_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | + --- @@ -1887,81 +5908,421 @@ Result: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_f ## Pipeline summary -- Producers: 2 -- Consumers: 0 -- Distinct producer fqnames: 2 -- Distinct consumer fqnames: 0 -- Access pattern (aggregate): mixed +- Producers: 119 +- Consumers: 66 +- Distinct producer fqnames: 98 +- Distinct consumer fqnames: 46 +- Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data +- Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (2) +## Producers (119) -### `src\ai_client.py` (2 producers) +### `src\aggregate.py` (1 producer) -- `src.ai_client._build_anthropic_tools` (line 623) +- `src.aggregate.build_file_items` (line 158) + +### `src\ai_client.py` (18 producers) + +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._strip_private_keys` (line 1464) - `src.ai_client._build_deepseek_tools` (line 1148) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._build_anthropic_tools` (line 623) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) -## Consumers (0) +### `src\api_hook_client.py` (39 producers) -_(none)_ +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\app_controller.py` (30 producers) + +- `src.app_controller.wait` (line 5205) +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.status` (line 2865) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_status` (line 209) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.get_api_session` (line 2847) + +### `src\models.py` (23 producers) + +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 938) +- `src.models.to_dict` (line 1059) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 1000) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 618) +- `src.models.to_dict` (line 701) + +### `src\project_manager.py` (8 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) + +## Consumers (66) + +### `src\aggregate.py` (5 consumers) + +- `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.run` (line 479) +- `src.aggregate._build_files_section_from_items` (line 300) + +### `src\ai_client.py` (29 consumers) + +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._estimate_message_tokens` (line 1218) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.send` (line 3208) + +### `src\app_controller.py` (5 consumers) + +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._on_comms_entry` (line 4282) +- `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._start_track_logic` (line 4721) + +### `src\models.py` (22 consumers) + +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 506) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 378) +- `src.models.from_dict` (line 1038) +- `src.models.from_dict` (line 1007) +- `src.models.from_dict` (line 747) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.from_dict` (line 866) +- `src.models.from_dict` (line 454) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 630) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 949) +- `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 1072) + +### `src\project_manager.py` (5 consumers) + +- `src.project_manager.save_project` (line 229) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.migrate_from_legacy_config` (line 253) ## Field access matrix -_(no field accesses detected)_ +| consumer | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _token_history | _topological_sort_tickets_result | active_discussion | active_project_path | active_project_root | ai_status | append | config | content | context_files | discussion | encode | engines | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | 1 | 1 | 1 | . | . | 4 | 4 | 1 | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | 2 | 2 | . | . | . | 1 | 1 | 1 | 1 | 4 | . | 1 | . | 1 | . | . | 1 | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_estimate_prompt_tokens` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | + +_... 23 more fields_ ## Access pattern -**Dominant pattern:** mixed -**Evidence count:** 0 +**Dominant pattern:** whole_struct +**Evidence count:** 50 + +**Per-function pattern distribution:** + +- `whole_struct`: 28 functions (56%) +- `mixed`: 18 functions (36%) +- `field_by_field`: 4 functions (8%) ## SSDL Sketch for `ToolDefinition` ``` [Q:ToolDefinition entry-point] -> [Q:PCG lookup] + -> [1: _invalidate_token_estimate] [B:check] (branches=0) + -> [2: from_dict] [B:check] (branches=0) + -> [3: build_markdown_from_items] [B:check] (branches=9) + -> [4: from_dict] [B:check] (branches=0) + -> [5: _create_gemini_cache_result] [B:check] (branches=3) + -> [6: _send_grok] [B:check] (branches=14) + -> [7: _strip_private_keys] [B:check] (branches=0) + -> [8: from_dict] [B:check] (branches=0) + -> [9: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [10: from_dict] [B:check] (branches=0) + -> [11: from_dict] [B:check] (branches=0) + -> [12: _send_gemini] [B:is None?] (branches=75) [N:safe] + -> [13: from_dict] [B:check] (branches=0) + -> [14: from_dict] [B:check] (branches=0) + -> [15: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [16: save_project] [B:is None?] (branches=7) [N:safe] + -> [17: _trim_anthropic_history] [B:check] (branches=13) + -> [18: _send_llama] [B:check] (branches=13) + -> [19: build_tier3_context] [B:check] (branches=50) + -> [20: _offload_entry_payload] [B:check] (branches=10) + -> [21: format_discussion] [B:check] (branches=0) + -> [22: entry_to_str] [B:check] (branches=3) + -> [23: _repair_minimax_history] [B:check] (branches=10) + -> [24: from_dict] [B:check] (branches=0) + -> [25: from_dict] [B:check] (branches=0) + -> [26: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [27: _send_deepseek] [B:check] (branches=71) + -> [28: _add_bleed_derived] [B:check] (branches=0) + -> [29: from_dict] [B:check] (branches=0) + -> [30: build_markdown_no_history] [B:check] (branches=0) + -> [31: flat_config] [B:check] (branches=2) + -> [32: _send_llama_native] [B:check] (branches=12) + -> [33: ollama_chat] [B:check] (branches=3) + -> [34: _send_qwen] [B:check] (branches=9) + -> [35: _on_comms_entry] [B:check] (branches=32) + -> [36: from_dict] [B:check] (branches=0) + -> [37: from_dict] [B:check] (branches=0) + -> [38: _repair_deepseek_history] [B:check] (branches=6) + -> [39: from_dict] [B:check] (branches=0) + -> [40: from_dict] [B:check] (branches=0) + -> [41: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [42: from_dict] [B:check] (branches=0) + -> [43: _repair_anthropic_history] [B:check] (branches=6) + -> [44: _strip_cache_controls] [B:check] (branches=4) + -> [45: run] [B:check] (branches=1) + -> [46: _save_config_to_disk] [B:check] (branches=1) + -> [47: _dashscope_call] [B:check] (branches=5) + -> [48: _start_track_logic_result] [B:check] (branches=10) + -> [49: from_dict] [B:check] (branches=0) + -> [50: _estimate_prompt_tokens] [B:check] (branches=2) + -> [51: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [52: from_dict] [B:check] (branches=0) + -> [53: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [54: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [55: _pre_dispatch] [B:check] (branches=8) + -> [56: from_dict] [B:check] (branches=0) + -> [57: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [58: _trim_minimax_history] [B:check] (branches=8) + -> [59: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [60: _start_track_logic] [B:check] (branches=1) + -> [61: from_dict] [B:check] (branches=0) + -> [62: from_dict] [B:check] (branches=0) + -> [63: from_dict] [B:check] (branches=0) + -> [64: migrate_from_legacy_config] [B:check] (branches=2) + -> [65: _send_minimax] [B:check] (branches=11) + -> [66: send] [B:check] (branches=19) -> [T:done] ``` -**Effective codepaths:** 0 (sum of 2^branches across 0 consumers) -**Total branch points:** 0 -**Nil-check functions:** 0 +**Effective codepaths:** 40140116231395706750390 (sum of 2^branches across 66 consumers) +**Total branch points:** 541 +**Nil-check functions:** 9 **Defusing opportunities:** -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `tooldefinition_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. - - Effective codepaths: 0 -> 1 +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 40140116231395706750390 -> 40140116231395706750372 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `tooldefinition_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 135 field-check branches to 1 cache lookup. + - Effective codepaths: 40140116231395706750390 -> 135 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 40140116231395706750390 -> 66 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 2 +**Evidence count:** 5 **Per-function frequency distribution:** -- `per_turn`: 2 functions +- `per_turn`: 5 functions ## Result coverage -**Summary:** 2 producers, 0 consumers +**Summary:** 98 producers, 46 consumers | metric | value | |---|---| -| total producers | 2 | -| result producers | 2 | -| total consumers | 0 | +| total producers | 98 | +| result producers | 98 | +| total consumers | 46 | | result consumers | 0 | ## Type alias coverage -**Summary:** 0 sites +**Summary:** 135 sites; 0 typed (0%); 135 untyped (100%) | metric | value | |---|---| -| total field-access sites | 0 | +| total field-access sites | 135 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 0 | +| untyped sites (wildcard) | 135 | ## Cross-audit findings @@ -1973,15 +6334,59 @@ _(no field accesses detected)_ **Current cost estimate:** 470 us/turn **Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** ToolDefinition: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** ToolDefinition: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. **Struct field count (estimated):** 5 **Struct frozen:** True ## Struct shape (inferred from producer returns) -_(no field access data; cannot infer shape)_ +| field | access count | access pattern | +|---|---|---| +| `content` | 16 | hot | +| `marker` | 16 | hot | +| `get` | 7 | hot | +| `append` | 3 | hot | +| `pop` | 2 | used | +| `files` | 2 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `estimated_prompt_tokens` | 1 | used | +| `max_prompt_tokens` | 1 | used | +| `utilization_pct` | 1 | used | +| `headroom` | 1 | used | +| `would_trim` | 1 | used | +| `sys_tokens` | 1 | used | +| `tool_tokens` | 1 | used | +| `history_tokens` | 1 | used | +| `local_ts` | 1 | used | +| `_offload_entry_payload` | 1 | used | +| `ui_auto_add_history` | 1 | used | +| `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `items` | 1 | used | +| `output` | 1 | used | +| `ai_status` | 1 | used | +| `context_files` | 1 | used | +| `_pending_gui_tasks_lock` | 1 | used | +| `_topological_sort_tickets_result` | 1 | used | +| `active_project_root` | 1 | used | +| `event_queue` | 1 | used | +| `engines` | 1 | used | +| `project` | 1 | used | +| `active_discussion` | 1 | used | +| `submit_io` | 1 | used | +| `tracks` | 1 | used | +| `config` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_pending_gui_tasks` | 1 | used | +| `mma_step_mode` | 1 | used | +| `active_project_path` | 1 | used | ## Optimization candidates @@ -1989,16 +6394,74 @@ _(no optimization candidates generated)_ ## Verdict -ToolDefinition: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +ToolDefinition: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | +| `src.ai_client._send_grok` | `whole_struct` | | low | +| `src.ai_client._strip_private_keys` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_anthropic` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | +| `src.ai_client._send_llama` | `whole_struct` | | low | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | +| `src.ai_client._send_deepseek` | `whole_struct` | | low | +| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._send_qwen` | `whole_struct` | | low | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | +| `src.models._save_config_to_disk` | `whole_struct` | | low | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._estimate_prompt_tokens` | `whole_struct` | | low | + ### Frequency evidence | function | frequency | source | note | |---|---|---|---| -| `src.ai_client._build_anthropic_tools` | `per_turn` | `static_analysis` | producer from src\ai_client.py | -| `src.ai_client._build_deepseek_tools` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.ai_client._extract_dashscope_tool_calls` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller.wait` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.ai_client._dashscope_call` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | --- @@ -2307,88 +6770,88 @@ Per-aggregate analysis: effective codepaths, branch points, defusing opportuniti | Aggregate | Consumers | Total branches | Effective codepaths | Field efficiency | |---|---|---|---|---| -| `Metadata` | 66 | 541 | 40140116231395706750390 | 0% | -| `FileItems` | 4 | 37 | 8388712 | 0% | -| `HistoryMessage` | 2 | 2 | 4 | 0% | -| `ToolCall` | 1 | 0 | 1 | 0% | -| `FileItem` | 0 | 0 | 0 | 0% | -| `CommsLogEntry` | 0 | 0 | 0 | 0% | -| `CommsLog` | 0 | 0 | 0 | 0% | -| `History` | 0 | 0 | 0 | 0% | -| `ToolDefinition` | 0 | 0 | 0 | 0% | +| `Metadata` | 752 | 3466 | 40142494212284116997693 | 0% | +| `HistoryMessage` | 68 | 543 | 40140116231395706750394 | 0% | +| `ToolCall` | 67 | 541 | 40140116231395706750391 | 0% | +| `FileItem` | 66 | 541 | 40140116231395706750390 | 0% | +| `CommsLogEntry` | 66 | 541 | 40140116231395706750390 | 0% | +| `ToolDefinition` | 66 | 541 | 40140116231395706750390 | 0% | +| `FileItems` | 9 | 46 | 8388739 | 0% | +| `History` | 7 | 11 | 31 | 0% | +| `CommsLog` | 5 | 9 | 27 | 0% | | `Result` | 0 | 0 | 0 | 0% | ## Defusing recommendations (top 10) +### `Metadata` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` + +- **Location:** Metadata consumers access 123 sites, only 0 typed (0%) +- **Current state:** Many consumers use wildcard or defensive access patterns +- **Recommended change:** Introduce a `metadata_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 123 field-check branches to 1 cache lookup. +- **Effective codepaths:** 40142494212284116997693 -> 123 + ### `Metadata` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` -- **Location:** Metadata consumers have 541 explicit branch points total +- **Location:** Metadata consumers have 3466 explicit branch points total +- **Current state:** Branch explosion: 3466 branches = 40142494212284116997693 effective codepaths +- **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. +- **Effective codepaths:** 40142494212284116997693 -> 752 + +### `HistoryMessage` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` + +- **Location:** HistoryMessage consumers have 543 explicit branch points total +- **Current state:** Branch explosion: 543 branches = 40140116231395706750394 effective codepaths +- **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. +- **Effective codepaths:** 40140116231395706750394 -> 68 + +### `FileItem` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` + +- **Location:** FileItem consumers have 541 explicit branch points total - **Current state:** Branch explosion: 541 branches = 40140116231395706750390 effective codepaths - **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. - **Effective codepaths:** 40140116231395706750390 -> 66 -### `Metadata` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` +### `CommsLogEntry` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` -- **Location:** Metadata consumers access 173 sites, only 0 typed (0%) -- **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `metadata_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 173 field-check branches to 1 cache lookup. -- **Effective codepaths:** 40140116231395706750390 -> 173 - -### `FileItems` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` - -- **Location:** FileItems consumers access 2 sites, only 0 typed (0%) -- **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `fileitems_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 2 field-check branches to 1 cache lookup. -- **Effective codepaths:** 8388712 -> 2 - -### `FileItems` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` - -- **Location:** FileItems consumers have 37 explicit branch points total -- **Current state:** Branch explosion: 37 branches = 8388712 effective codepaths +- **Location:** CommsLogEntry consumers have 541 explicit branch points total +- **Current state:** Branch explosion: 541 branches = 40140116231395706750390 effective codepaths - **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. -- **Effective codepaths:** 8388712 -> 4 +- **Effective codepaths:** 40140116231395706750390 -> 66 -### `Metadata` - Nil Sentinel `[N]` +### `ToolDefinition` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` -- **Location:** 9 consumer functions have `is None` / `== None` checks -- **Current state:** 9 nil-check branches contribute to branch explosion -- **Recommended change:** Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. -- **Effective codepaths:** 40140116231395706750390 -> 40140116231395706750372 +- **Location:** ToolDefinition consumers have 541 explicit branch points total +- **Current state:** Branch explosion: 541 branches = 40140116231395706750390 effective codepaths +- **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. +- **Effective codepaths:** 40140116231395706750390 -> 66 -### `FileItems` - Nil Sentinel `[N]` +### `ToolCall` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` -- **Location:** 2 consumer functions have `is None` / `== None` checks -- **Current state:** 2 nil-check branches contribute to branch explosion -- **Recommended change:** Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. -- **Effective codepaths:** 8388712 -> 8388708 +- **Location:** ToolCall consumers have 541 explicit branch points total +- **Current state:** Branch explosion: 541 branches = 40140116231395706750391 effective codepaths +- **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. +- **Effective codepaths:** 40140116231395706750391 -> 67 ### `HistoryMessage` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` -- **Location:** HistoryMessage consumers access 4 sites, only 0 typed (0%) +- **Location:** HistoryMessage consumers access 137 sites, only 0 typed (0%) - **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `historymessage_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 4 field-check branches to 1 cache lookup. -- **Effective codepaths:** 4 -> 4 - -### `ToolCall` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` - -- **Location:** ToolCall consumers access 1 sites, only 0 typed (0%) -- **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `toolcall_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 1 field-check branches to 1 cache lookup. -- **Effective codepaths:** 1 -> 1 +- **Recommended change:** Introduce a `historymessage_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 137 field-check branches to 1 cache lookup. +- **Effective codepaths:** 40140116231395706750394 -> 137 ### `FileItem` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` -- **Location:** FileItem consumers access 0 sites, only 0 typed (0%) +- **Location:** FileItem consumers access 135 sites, only 0 typed (0%) - **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `fileitem_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. -- **Effective codepaths:** 0 -> 1 +- **Recommended change:** Introduce a `fileitem_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 135 field-check branches to 1 cache lookup. +- **Effective codepaths:** 40140116231395706750390 -> 135 ### `CommsLogEntry` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` -- **Location:** CommsLogEntry consumers access 0 sites, only 0 typed (0%) +- **Location:** CommsLogEntry consumers access 135 sites, only 0 typed (0%) - **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `commslogentry_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. -- **Effective codepaths:** 0 -> 1 +- **Recommended change:** Introduce a `commslogentry_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 135 field-check branches to 1 cache lookup. +- **Effective codepaths:** 40140116231395706750390 -> 135 --- @@ -2408,14 +6871,21 @@ Cross-aggregate view of codebase organization. Verdicts derived from SSDL analys | file | aggregates produced | aggregates consumed | |---|---|---| -| `src\ai_client.py` | 2 | 2 | -| `src\aggregate.py` | 1 | 1 | -| `src\app_controller.py` | 1 | 1 | -| `src\models.py` | 1 | 1 | -| `src\openai_compatible.py` | 1 | 1 | -| `src\project_manager.py` | 1 | 1 | -| `src\provider_state.py` | 1 | 1 | -| `src\api_hook_client.py` | 1 | 0 | +| `src\ai_client.py` | 9 | 7 | +| `src\app_controller.py` | 6 | 9 | +| `src\project_manager.py` | 6 | 9 | +| `src\aggregate.py` | 6 | 6 | +| `src\models.py` | 6 | 6 | +| `src\gui_2.py` | 4 | 4 | +| `src\api_hook_client.py` | 6 | 1 | +| `src\provider_state.py` | 3 | 3 | +| `src\openai_compatible.py` | 2 | 2 | +| `src\api_hooks.py` | 1 | 1 | +| `src\api_hooks_helpers.py` | 1 | 1 | +| `src\beads_client.py` | 1 | 1 | +| `src\code_path_audit.py` | 1 | 1 | +| `src\code_path_audit_analysis.py` | 1 | 1 | +| `src\code_path_audit_cross_audit.py` | 1 | 1 | ### Files with high coupling (producers + consumers >= 8) @@ -2423,20 +6893,26 @@ These files are the central nervous system of the codebase. Changes ripple acros | file | coupling score (producers + consumers) | |---|---| +| `src\ai_client.py` | 16 (high) | +| `src\app_controller.py` | 15 (high) | +| `src\project_manager.py` | 15 (high) | +| `src\aggregate.py` | 12 (high) | +| `src\models.py` | 12 (high) | +| `src\gui_2.py` | 8 (high) | ## Per-aggregate organization verdict | Aggregate | Verdict | Notes | |---|---|---| -| `Metadata` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750390 effective codepaths | -| `FileItem` | needs restructuring | 0% field efficiency | -| `FileItems` | needs restructuring | 2 nil checks; 0% field efficiency; 8388712 effective codepaths | -| `CommsLogEntry` | needs restructuring | 0% field efficiency | +| `Metadata` | needs restructuring | 74 nil checks; 0% field efficiency; 40142494212284116997693 effective codepaths | +| `FileItem` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750390 effective codepaths | +| `FileItems` | needs restructuring | 2 nil checks; 0% field efficiency; 8388739 effective codepaths | +| `CommsLogEntry` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750390 effective codepaths | | `CommsLog` | needs restructuring | 0% field efficiency | -| `HistoryMessage` | needs restructuring | 0% field efficiency | +| `HistoryMessage` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750394 effective codepaths | | `History` | needs restructuring | 0% field efficiency | -| `ToolDefinition` | needs restructuring | 0% field efficiency | -| `ToolCall` | needs restructuring | 0% field efficiency | +| `ToolDefinition` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750390 effective codepaths | +| `ToolCall` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750391 effective codepaths | | `Result` | needs restructuring | 0% field efficiency | **Tally:** 0 well-organized, 0 moderate, 10 needs restructuring @@ -2445,21 +6921,21 @@ These files are the central nervous system of the codebase. Changes ripple acros Top restructuring routes (by effective codepath count): -1. **`Metadata`**: 40140116231395706750390 effective codepaths (0% field efficiency) +1. **`Metadata`**: 40142494212284116997693 effective codepaths (0% field efficiency) + - Apply nil sentinel to 74 nil-check functions + - Migrate to immediate-mode cache for 123 field-access sites +2. **`HistoryMessage`**: 40140116231395706750394 effective codepaths (0% field efficiency) - Apply nil sentinel to 9 nil-check functions - - Migrate to immediate-mode cache for 173 field-access sites -2. **`FileItems`**: 8388712 effective codepaths (0% field efficiency) - - Apply nil sentinel to 2 nil-check functions - - Migrate to immediate-mode cache for 2 field-access sites -3. **`HistoryMessage`**: 4 effective codepaths (0% field efficiency) - - Apply nil sentinel to 0 nil-check functions - - Migrate to immediate-mode cache for 4 field-access sites -4. **`ToolCall`**: 1 effective codepaths (0% field efficiency) - - Apply nil sentinel to 0 nil-check functions - - Migrate to immediate-mode cache for 1 field-access sites -5. **`FileItem`**: 0 effective codepaths (0% field efficiency) - - Apply nil sentinel to 0 nil-check functions - - Migrate to immediate-mode cache for 0 field-access sites + - Migrate to immediate-mode cache for 137 field-access sites +3. **`ToolCall`**: 40140116231395706750391 effective codepaths (0% field efficiency) + - Apply nil sentinel to 9 nil-check functions + - Migrate to immediate-mode cache for 136 field-access sites +4. **`FileItem`**: 40140116231395706750390 effective codepaths (0% field efficiency) + - Apply nil sentinel to 9 nil-check functions + - Migrate to immediate-mode cache for 135 field-access sites +5. **`CommsLogEntry`**: 40140116231395706750390 effective codepaths (0% field efficiency) + - Apply nil sentinel to 9 nil-check functions + - Migrate to immediate-mode cache for 135 field-access sites --- @@ -2470,240 +6946,2247 @@ Top restructuring routes (by effective codepath count): Functions that are producers or consumers of each aggregate, grouped by file. -## Metadata (117 producers + 66 consumers) +## Metadata (483 producers + 752 consumers) | role | fqname | file | |---|---|---| -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | -| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | -| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | -| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | -| producer | `src.app_controller.generate` | `src\app_controller.py` | -| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | -| producer | `src.app_controller.token_stats` | `src\app_controller.py` | -| producer | `src.project_manager.flat_config` | `src\project_manager.py` | -| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | -| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | -| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | -| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | -| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | -| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | -| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | -| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | -| producer | `src.app_controller.load_config` | `src\app_controller.py` | -| producer | `src.project_manager.load_project` | `src\project_manager.py` | -| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | -| producer | `src.models.parse_history_entries` | `src\models.py` | -| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | -| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | -| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | -| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | -| producer | `src.app_controller.status` | `src\app_controller.py` | -| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | -| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._api_generate` | `src\app_controller.py` | -| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | -| producer | `src.app_controller._api_status` | `src\app_controller.py` | -| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | -| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | -| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | -| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | -| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | -| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | -| producer | `src.app_controller.get_context` | `src\app_controller.py` | -| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | -| producer | `src.project_manager.default_project` | `src\project_manager.py` | -| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.gui_2._populate_auto_slices_file_read_result` | `src\gui_2.py` | +| producer | `src.ai_client._try_warm_sdk_result` | `src\ai_client.py` | | producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | -| producer | `src.models._load_config_from_disk` | `src\models.py` | -| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.summarize._summarise_generic` | `src\summarize.py` | +| producer | `src.code_path_audit_ssdl.render_ssdl_sketch` | `src\code_path_audit_ssdl.py` | +| producer | `src.code_path_audit.generate_rationale` | `src\code_path_audit.py` | +| producer | `src.file_cache.get_curated_view` | `src\file_cache.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.summarize.summarise_items` | `src\summarize.py` | +| producer | `src.theme_2.get_palette_names` | `src\theme_2.py` | +| producer | `src.log_registry.get_old_non_whitelisted_sessions` | `src\log_registry.py` | +| producer | `src.app_controller._api_post_api_session` | `src\app_controller.py` | +| producer | `src.code_path_audit_ssdl.suggest_defusing_technique` | `src\code_path_audit_ssdl.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.theme_models.load_themes_from_dir` | `src\theme_models.py` | +| producer | `src.ai_client._list_llama_models` | `src\ai_client.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.project_manager.load_track_history` | `src\project_manager.py` | +| producer | `src.ai_client._get_gemini_history_list` | `src\ai_client.py` | +| producer | `src.mcp_client.py_find_usages` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_c_update_definition_result` | `src\mcp_client.py` | +| producer | `src.beads_client._read_beads` | `src\beads_client.py` | +| producer | `src.mcp_tool_specs.tool_names` | `src\mcp_tool_specs.py` | +| producer | `src.tool_presets._read_raw` | `src\tool_presets.py` | +| producer | `src.app_controller.post_gui` | `src\app_controller.py` | +| producer | `src.mcp_client.get_file_summary` | `src\mcp_client.py` | +| producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | +| producer | `src.aggregate.run` | `src\aggregate.py` | +| producer | `src.gui_2.ui_message` | `src\gui_2.py` | +| producer | `src.file_cache.update_definition` | `src\file_cache.py` | +| producer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.theme_2.get_syntax_palette_for_theme` | `src\theme_2.py` | +| producer | `src.mcp_client.py_get_skeleton_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_c_get_definition_result` | `src\mcp_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.mcp_client._ast_get_signature` | `src\mcp_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.mcp_client.get_tree` | `src\mcp_client.py` | +| producer | `src.project_manager.calculate_track_progress` | `src\project_manager.py` | +| producer | `src.warmup.status` | `src\warmup.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.mcp_client.py_set_signature` | `src\mcp_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.mcp_client.ts_cpp_get_skeleton` | `src\mcp_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.markdown_helper.detect_language` | `src\markdown_helper.py` | +| producer | `src.gui_2.askdirectory` | `src\gui_2.py` | +| producer | `src.mcp_client.get_file_summary_result` | `src\mcp_client.py` | | producer | `src.aggregate.build_file_items` | `src\aggregate.py` | -| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.file_cache.get_file_id` | `src\file_cache.py` | +| producer | `src.startup_profiler.snapshot` | `src\startup_profiler.py` | +| producer | `src.gui_2.__getattr__` | `src\gui_2.py` | +| producer | `src.aggregate.build_beads_section` | `src\aggregate.py` | +| producer | `src.gui_2._capture_workspace_profile_ini_result` | `src\gui_2.py` | +| producer | `src.outline_tool.get_outline` | `src\outline_tool.py` | +| producer | `src.gui_2._render_context_batch_actions_preview_result` | `src\gui_2.py` | +| producer | `src.api_hook_client.approve_mma_ticket` | `src\api_hook_client.py` | +| producer | `src.app_controller._confirm_and_run` | `src\app_controller.py` | +| producer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| producer | `src.app_controller.current_model` | `src\app_controller.py` | +| producer | `src.ai_client.run_tier4_analysis` | `src\ai_client.py` | +| producer | `src.app_controller.rag_source` | `src\app_controller.py` | +| producer | `src.shell_runner._build_subprocess_env` | `src\shell_runner.py` | +| producer | `src.app_controller._api_health` | `src\app_controller.py` | +| producer | `src.api_hooks._get_app_attr` | `src\api_hooks.py` | +| producer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| producer | `src.app_controller.current_provider` | `src\app_controller.py` | +| producer | `src.summary_cache.get_stats` | `src\summary_cache.py` | +| producer | `src.ai_client._list_deepseek_models` | `src\ai_client.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.mcp_client.dispatch` | `src\mcp_client.py` | +| producer | `src.openai_schemas.to_legacy_dict` | `src\openai_schemas.py` | +| producer | `src.session_logger.log_tool_call` | `src\session_logger.py` | +| producer | `src.gui_2._render_ast_inspector_outline_result` | `src\gui_2.py` | +| producer | `src.shell_runner._load_env_config` | `src\shell_runner.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client.send` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.mcp_client.ts_cpp_get_code_outline` | `src\mcp_client.py` | +| producer | `src.mcp_client.py_update_definition_result` | `src\mcp_client.py` | +| producer | `src.tool_bias.generate_tooling_strategy` | `src\tool_bias.py` | +| producer | `src.theme_2.get_current_font_path` | `src\theme_2.py` | +| producer | `src.result_types.ui_message` | `src\result_types.py` | +| producer | `src.mcp_client.read_file` | `src\mcp_client.py` | +| producer | `src.mcp_client._build_tree` | `src\mcp_client.py` | +| producer | `src.ai_client._ensure_llama_client` | `src\ai_client.py` | +| producer | `src.mcp_client.py_get_signature_result` | `src\mcp_client.py` | +| producer | `src.gui_2._resolve_font_path_result` | `src\gui_2.py` | +| producer | `src.gui_2._diag_layout_state_ini_text_result` | `src\gui_2.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.mcp_client._ast_update_definition` | `src\mcp_client.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.module_loader._require_warmed` | `src\module_loader.py` | +| producer | `src.code_path_audit._extract_type_name` | `src\code_path_audit.py` | +| producer | `src.performance_monitor.get_metrics` | `src\performance_monitor.py` | +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.mcp_client.fetch_url_result` | `src\mcp_client.py` | +| producer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| producer | `src.gui_2.missing_files` | `src\gui_2.py` | +| producer | `src.events.to_dict` | `src\events.py` | +| producer | `src.app_controller.startup_timeline` | `src\app_controller.py` | +| producer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| producer | `src.ai_client.list_models` | `src\ai_client.py` | +| producer | `src.ai_client._run_script` | `src\ai_client.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| producer | `src.mcp_client.get_git_diff_result` | `src\mcp_client.py` | +| producer | `src.app_controller.warmup_status` | `src\app_controller.py` | +| producer | `src.mcp_client.ts_cpp_update_definition_result` | `src\mcp_client.py` | +| producer | `src.api_hook_client.pause_mma_pipeline` | `src\api_hook_client.py` | +| producer | `src.mcp_client.ts_cpp_update_definition` | `src\mcp_client.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.session_logger._now_ts` | `src\session_logger.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.gui_2._render_warmup_status_indicator_result` | `src\gui_2.py` | +| producer | `src.workspace_manager.load_all_profiles` | `src\workspace_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.aggregate.group_files_by_dir` | `src\aggregate.py` | +| producer | `src.ai_client.run_tier4_patch_generation` | `src\ai_client.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.mcp_client.async_dispatch` | `src\mcp_client.py` | +| producer | `src.code_path_audit_cross_audit._normalize_path` | `src\code_path_audit_cross_audit.py` | +| producer | `src.orchestrator_pm.generate_tracks` | `src\orchestrator_pm.py` | +| producer | `src.mcp_client.py_get_definition_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.list_directory_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_cpp_get_skeleton_result` | `src\mcp_client.py` | +| producer | `src.mcp_tool_specs.to_dict` | `src\mcp_tool_specs.py` | +| producer | `src.code_path_audit_cross_audit.map_finding_to_aggregates` | `src\code_path_audit_cross_audit.py` | +| producer | `src.app_controller._get_discussion_names` | `src\app_controller.py` | +| producer | `src.mcp_client.py_get_imports` | `src\mcp_client.py` | +| producer | `src.synthesis_formatter.format_takes_diff` | `src\synthesis_formatter.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.mcp_client.search_files` | `src\mcp_client.py` | +| producer | `src.dag_engine.topological_sort` | `src\dag_engine.py` | +| producer | `src.code_path_audit_ssdl.render_organization_deductions` | `src\code_path_audit_ssdl.py` | +| producer | `src.mcp_client.py_get_var_declaration_result` | `src\mcp_client.py` | +| producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.fuzzy_anchor.get_context` | `src\fuzzy_anchor.py` | +| producer | `src.mcp_client.read_file_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.derive_code_path` | `src\mcp_client.py` | +| producer | `src.ai_client._get_context_marker` | `src\ai_client.py` | +| producer | `src.mcp_client.ts_cpp_get_signature_result` | `src\mcp_client.py` | +| producer | `src.shell_runner.run_powershell` | `src\shell_runner.py` | +| producer | `src.code_path_audit_cross_audit.aggregate_findings` | `src\code_path_audit_cross_audit.py` | +| producer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| producer | `src.code_path_audit_analysis._field_names_for_aggregate` | `src\code_path_audit_analysis.py` | +| producer | `src.summarize.build_summary_markdown` | `src\summarize.py` | +| producer | `src.markdown_helper._normalize_bullet_delimiters` | `src\markdown_helper.py` | +| producer | `src.app_controller._api_post_gui` | `src\app_controller.py` | +| producer | `src.mcp_client.py_get_symbol_info` | `src\mcp_client.py` | +| producer | `src.app_controller._api_confirm_action` | `src\app_controller.py` | +| producer | `src.warmup.canaries` | `src\warmup.py` | +| producer | `src.mcp_client.py_get_hierarchy` | `src\mcp_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.api_hook_client.mutate_mma_dag` | `src\api_hook_client.py` | +| producer | `src.models.provider` | `src\models.py` | +| producer | `src.ai_client._send_llama` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.aggregate.build_discussion_text` | `src\aggregate.py` | +| producer | `src.mcp_client.py_set_signature_result` | `src\mcp_client.py` | | producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | | producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | -| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | -| producer | `src.app_controller.wait` | `src\app_controller.py` | -| producer | `src.app_controller.get_session` | `src\app_controller.py` | -| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | -| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.app_controller.list_sessions` | `src\app_controller.py` | +| producer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| producer | `src.fuzzy_anchor.create_slice` | `src\fuzzy_anchor.py` | +| producer | `src.app_controller.get_symbol_definition` | `src\app_controller.py` | +| producer | `src.openai_compatible._to_dict_tool_call` | `src\openai_compatible.py` | | producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | -| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.mcp_client.py_set_var_declaration` | `src\mcp_client.py` | +| producer | `src.mcp_client.py_get_class_summary` | `src\mcp_client.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.delete_session` | `src\app_controller.py` | | producer | `src.app_controller.get_performance` | `src\app_controller.py` | -| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.mcp_tool_specs.to_dict` | `src\mcp_tool_specs.py` | +| producer | `src.theme_models.to_dict` | `src\theme_models.py` | +| producer | `src.code_path_audit_cross_audit._file_to_aggregates` | `src\code_path_audit_cross_audit.py` | +| producer | `src.code_path_audit.to_markdown` | `src\code_path_audit.py` | +| producer | `src.mcp_client.py_check_syntax_result` | `src\mcp_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.code_path_audit.load_frequency_overrides` | `src\code_path_audit.py` | +| producer | `src.ai_client._ensure_grok_client` | `src\ai_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.orchestrator_pm.get_track_history_summary` | `src\orchestrator_pm.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.mcp_client.ts_c_get_skeleton` | `src\mcp_client.py` | +| producer | `src.app_controller.warmup_canaries` | `src\app_controller.py` | +| producer | `src.mcp_client.get_tool_schemas` | `src\mcp_client.py` | +| producer | `src.app_controller._extract_tool_name` | `src\app_controller.py` | +| producer | `src.events._make_serializable` | `src\events.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.command_palette.register` | `src\command_palette.py` | +| producer | `src.ai_client._chunk_text` | `src\ai_client.py` | +| producer | `src.code_path_audit_analysis._analyze_function_param_names` | `src\code_path_audit_analysis.py` | +| producer | `src.summarize.summarise_file` | `src\summarize.py` | +| producer | `src.mcp_client.py_set_var_declaration_result` | `src\mcp_client.py` | +| producer | `src.code_path_audit_render.render_full_markdown` | `src\code_path_audit_render.py` | +| producer | `src.ai_client.run_discussion_compression` | `src\ai_client.py` | +| producer | `src.mcp_client.ts_cpp_get_definition` | `src\mcp_client.py` | +| producer | `src.ai_client._run_tier4_patch_generation_result` | `src\ai_client.py` | +| producer | `src.history.to_dict` | `src\history.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.mcp_client.get_all_tools` | `src\mcp_client.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.ai_client._get_combined_system_prompt` | `src\ai_client.py` | +| producer | `src.mcp_client.py_get_imports_result` | `src\mcp_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.personas.load_all` | `src\personas.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.app_controller.parse_symbols` | `src\app_controller.py` | +| producer | `src.code_path_audit_render.render_call_graph_rollup` | `src\code_path_audit_render.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.ai_client._list_grok_models` | `src\ai_client.py` | +| producer | `src.app_controller._api_list_sessions` | `src\app_controller.py` | +| producer | `src.beads_client.create_bead` | `src\beads_client.py` | +| producer | `src.mcp_client.ts_c_get_code_outline` | `src\mcp_client.py` | +| producer | `src.mcp_client.py_get_definition` | `src\mcp_client.py` | +| producer | `src.app_controller.rag_mcp_server` | `src\app_controller.py` | +| producer | `src.mcp_client.set_file_slice` | `src\mcp_client.py` | +| producer | `src.models.get` | `src\models.py` | +| producer | `src.mcp_client.search_files_result` | `src\mcp_client.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._extract_minimax_reasoning` | `src\ai_client.py` | +| producer | `src.mcp_client.py_update_definition` | `src\mcp_client.py` | +| producer | `src.commands.register` | `src\commands.py` | +| producer | `src.code_path_audit._atom` | `src\code_path_audit.py` | +| producer | `src.ai_client._extract_gemini_thoughts_result` | `src\ai_client.py` | +| producer | `src.rag_engine.get_all_indexed_paths` | `src\rag_engine.py` | +| producer | `src.mcp_client.ts_cpp_get_code_outline_result` | `src\mcp_client.py` | +| producer | `src.diff_viewer.get_line_color` | `src\diff_viewer.py` | +| producer | `src.mcp_client.get_file_slice` | `src\mcp_client.py` | | producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.external_editor.create_temp_modified_file` | `src\external_editor.py` | +| producer | `src.models.model` | `src\models.py` | +| producer | `src.commands.__getattr__` | `src\commands.py` | +| producer | `src.summary_cache.get_file_hash` | `src\summary_cache.py` | +| producer | `src.presets.get_preset_scope` | `src\presets.py` | +| producer | `src.app_controller._compute_warmup_list` | `src\app_controller.py` | +| producer | `src.app_controller._resolve_log_ref` | `src\app_controller.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.app_controller.stream` | `src\app_controller.py` | +| producer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.code_path_audit.read_input_json` | `src\code_path_audit.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | +| producer | `src.mcp_client.web_search_result` | `src\mcp_client.py` | +| producer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.mcp_client.py_get_code_outline` | `src\mcp_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.log_registry.__getitem__` | `src\log_registry.py` | +| producer | `src.gui_2.app_debug_info` | `src\gui_2.py` | +| producer | `src.mcp_client.py_get_signature` | `src\mcp_client.py` | +| producer | `src.events.get` | `src\events.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.mcp_client.py_get_docstring` | `src\mcp_client.py` | +| producer | `src.openai_schemas.to_dict` | `src\openai_schemas.py` | +| producer | `src.mcp_client.py_get_symbol_info_result` | `src\mcp_client.py` | +| producer | `src.api_hook_client.kill_mma_worker` | `src\api_hook_client.py` | +| producer | `src.external_editor.build_diff_command` | `src\external_editor.py` | +| producer | `src.presets._load_file` | `src\presets.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.mcp_client.derive_code_path_result` | `src\mcp_client.py` | +| producer | `src.code_path_audit_ssdl.render_ssdl_rollup` | `src\code_path_audit_ssdl.py` | +| producer | `src.gui_2.current_provider` | `src\gui_2.py` | +| producer | `src.openai_schemas.to_dict` | `src\openai_schemas.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller.ai_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.run_with_tool_loop` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_text_value` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.ai_client.get_provider` | `src\ai_client.py` | +| producer | `src.log_registry.to_dict` | `src\log_registry.py` | +| producer | `src.file_cache.get_targeted_view` | `src\file_cache.py` | +| producer | `src.mcp_client.ts_cpp_get_signature` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_c_get_code_outline_result` | `src\mcp_client.py` | +| producer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| producer | `src.mcp_client.edit_file_result` | `src\mcp_client.py` | +| producer | `src.summarize._summarise_markdown` | `src\summarize.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.confirm_action` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client._build_file_context_text` | `src\ai_client.py` | +| producer | `src.gui_2.askopenfilename` | `src\gui_2.py` | +| producer | `src.file_cache.get_skeleton` | `src\file_cache.py` | +| producer | `src.ai_client.run_tier4_patch_callback` | `src\ai_client.py` | +| producer | `src.mcp_client._ast_get_definition` | `src\mcp_client.py` | +| producer | `src.app_controller._api_get_key` | `src\app_controller.py` | +| producer | `src.markdown_helper._normalize_nested_list_endings` | `src\markdown_helper.py` | +| producer | `src.app_controller.active_project_root` | `src\app_controller.py` | +| producer | `src.app_controller.submit_io` | `src\app_controller.py` | +| producer | `src.code_path_audit.to_tree` | `src\code_path_audit.py` | +| producer | `src.aggregate.compute_file_stats` | `src\aggregate.py` | +| producer | `src.mcp_client.py_get_code_outline_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_c_get_signature_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.get_ui_performance` | `src\mcp_client.py` | +| producer | `src.models.__getattr__` | `src\models.py` | +| producer | `src.log_registry.to_dict` | `src\log_registry.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.gui_2.truncate_entries` | `src\gui_2.py` | +| producer | `src.rag_engine._chunk_text` | `src\rag_engine.py` | +| producer | `src.app_controller.summary_cache` | `src\app_controller.py` | +| producer | `src.aggregate.build_discussion_section` | `src\aggregate.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.gui_2.ui_screenshot_paths` | `src\gui_2.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.spawn_mma_worker` | `src\api_hook_client.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.mcp_client.web_search` | `src\mcp_client.py` | +| producer | `src.log_registry.get` | `src\log_registry.py` | +| producer | `src.conductor_tech_lead.generate_tickets` | `src\conductor_tech_lead.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.personas._load_file` | `src\personas.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.theme_models.to_dict` | `src\theme_models.py` | +| producer | `src.ai_client._list_gemini_cli_models` | `src\ai_client.py` | +| producer | `src.log_registry.sessions` | `src\log_registry.py` | +| producer | `src.aggregate.build_markdown` | `src\aggregate.py` | +| producer | `src.app_controller.rag_emb_provider` | `src\app_controller.py` | +| producer | `src.file_cache.find_id` | `src\file_cache.py` | +| producer | `src.aggregate.build_screenshots_section` | `src\aggregate.py` | +| producer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| producer | `src.markdown_helper._normalize_list_continuations` | `src\markdown_helper.py` | +| producer | `src.code_path_audit_render.render_field_usage_rollup` | `src\code_path_audit_render.py` | +| producer | `src.outline_tool.get_docstring` | `src\outline_tool.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | | producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.api_hooks._safe_controller_result` | `src\api_hooks.py` | +| producer | `src.code_path_audit._resolve_aliases` | `src\code_path_audit.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| producer | `src.conductor_tech_lead.topological_sort` | `src\conductor_tech_lead.py` | +| producer | `src.mcp_client.get_tree_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_cpp_get_definition_result` | `src\mcp_client.py` | +| producer | `src.paths.get_full_path_info` | `src\paths.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.mcp_client.async_dispatch` | `src\mcp_client.py` | +| producer | `src.code_path_audit.render_rollups` | `src\code_path_audit.py` | +| producer | `src.gui_2.asksaveasfilename` | `src\gui_2.py` | +| producer | `src.mcp_client.py_get_class_summary_result` | `src\mcp_client.py` | +| producer | `src.gui_2.current_model` | `src\gui_2.py` | +| producer | `src.app_controller._do_generate` | `src\app_controller.py` | +| producer | `src.app_controller.mcp_config_json` | `src\app_controller.py` | +| producer | `src.mcp_client.get_ui_performance_result` | `src\mcp_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.app_controller.ui_file_paths` | `src\app_controller.py` | +| producer | `src.personas.get_persona_scope` | `src\personas.py` | +| producer | `src.ai_client.get_combined_system_prompt` | `src\ai_client.py` | +| producer | `src.code_path_audit.to_dsl_v2` | `src\code_path_audit.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.summarize._summarise_python` | `src\summarize.py` | +| producer | `src.file_cache._get_name` | `src\file_cache.py` | +| producer | `src.app_controller.__getattr__` | `src\app_controller.py` | +| producer | `src.ai_client._list_qwen_models` | `src\ai_client.py` | +| producer | `src.file_cache.get_definition` | `src\file_cache.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.code_path_audit.code_path_audit_v2` | `src\code_path_audit.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.now_ts` | `src\project_manager.py` | +| producer | `src.commands._get_real_registry` | `src\commands.py` | +| producer | `src.code_path_audit_cross_audit._aggregate_for_fqname` | `src\code_path_audit_cross_audit.py` | +| producer | `src.project_manager.clean_nones` | `src\project_manager.py` | +| producer | `src.ai_client._run_tier4_analysis_result` | `src\ai_client.py` | +| producer | `src.models._clean_nones` | `src\models.py` | +| producer | `src.mcp_client.fetch_url` | `src\mcp_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.tool_presets.load_all_presets` | `src\tool_presets.py` | +| producer | `src.mcp_client.py_get_docstring_result` | `src\mcp_client.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.mcp_client.set_file_slice_result` | `src\mcp_client.py` | +| producer | `src.workspace_manager._load_file` | `src\workspace_manager.py` | +| producer | `src.mcp_client.get_servers_status` | `src\mcp_client.py` | +| producer | `src.ai_client.get_current_tier` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.hot_reloader.capture_state` | `src\hot_reloader.py` | +| producer | `src.presets.load_all` | `src\presets.py` | +| producer | `src.code_path_audit.parse_dsl_v2` | `src\code_path_audit.py` | +| producer | `src.mcp_client.py_check_syntax` | `src\mcp_client.py` | +| producer | `src.mcp_client.edit_file` | `src\mcp_client.py` | +| producer | `src.app_controller.get_api_key` | `src\app_controller.py` | +| producer | `src.mcp_client._ast_get_skeleton` | `src\mcp_client.py` | +| producer | `src.code_path_audit.run_all_cross_audit_reads` | `src\code_path_audit.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.mcp_client._ast_get_code_outline` | `src\mcp_client.py` | +| producer | `src.ai_client.get_bias_profile` | `src\ai_client.py` | +| producer | `src.tool_presets.load_all_bias_profiles` | `src\tool_presets.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.gemini_cli_adapter.send` | `src\gemini_cli_adapter.py` | +| producer | `src.api_hook_client.inject_context` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller.rag_mcp_tool` | `src\app_controller.py` | +| producer | `src.app_controller.post_api_session` | `src\app_controller.py` | +| producer | `src.session_logger.log_tool_output` | `src\session_logger.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.file_cache.get_code_outline` | `src\file_cache.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.mcp_client.get_file_slice_result` | `src\mcp_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.tool_presets.load_all` | `src\tool_presets.py` | +| producer | `src.rag_engine._read_file_content_result` | `src\rag_engine.py` | +| producer | `src.app_controller._api_delete_session` | `src\app_controller.py` | +| producer | `src.gui_2.ui_file_paths` | `src\gui_2.py` | +| producer | `src.mcp_client.get_git_diff` | `src\mcp_client.py` | | producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | | producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.summary_cache.get_summary` | `src\summary_cache.py` | +| producer | `src.warmup._snapshot` | `src\warmup.py` | +| producer | `src.file_cache.get_signature` | `src\file_cache.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.mcp_client.ts_c_update_definition` | `src\mcp_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.ai_client._truncate_tool_output` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_indicator_state` | `src\api_hook_client.py` | +| producer | `src.theme_2.get_current_palette` | `src\theme_2.py` | +| producer | `src.provider_state.providers` | `src\provider_state.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_git_commit` | `src\project_manager.py` | +| producer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| producer | `src.mcp_client.py_get_skeleton` | `src\mcp_client.py` | +| producer | `src.mcp_client.py_get_var_declaration` | `src\mcp_client.py` | +| producer | `src.ai_client._build_file_diff_text` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.markdown_table._split_row` | `src\markdown_table.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.api_hooks_helpers._get_app_attr` | `src\api_hooks_helpers.py` | +| producer | `src.mcp_client.py_find_usages_result` | `src\mcp_client.py` | +| producer | `src.outline_tool.outline` | `src\outline_tool.py` | +| producer | `src.qwen_adapter.build_dashscope_tools` | `src\qwen_adapter.py` | +| producer | `src.theme_2.get_font_loading_params` | `src\theme_2.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.health` | `src\app_controller.py` | +| producer | `src.vendor_capabilities.list_models_for_vendor` | `src\vendor_capabilities.py` | +| producer | `src.app_controller._api_stream` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_value` | `src\api_hook_client.py` | +| producer | `src.summarize._summarise_toml` | `src\summarize.py` | +| producer | `src.app_controller.mma_status` | `src\app_controller.py` | +| producer | `src.theme_models.load_themes_from_toml` | `src\theme_models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.ai_client._send_grok` | `src\ai_client.py` | +| producer | `src.external_editor._find_vscode_common_paths` | `src\external_editor.py` | +| producer | `src.mcp_client.ts_c_get_skeleton_result` | `src\mcp_client.py` | +| producer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| producer | `src.mcp_client.ts_c_get_definition` | `src\mcp_client.py` | +| producer | `src.code_path_audit.load_memory_dim_overrides` | `src\code_path_audit.py` | +| producer | `src.mcp_client.ts_c_get_signature` | `src\mcp_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.ai_client.run_subagent_summarization` | `src\ai_client.py` | +| producer | `src.theme_2._build_semantic_colour_dict` | `src\theme_2.py` | +| producer | `src.api_hook_client.resume_mma_pipeline` | `src\api_hook_client.py` | +| producer | `src.paths.info` | `src\paths.py` | +| producer | `src.gui_2._populate_auto_slices_outline_result` | `src\gui_2.py` | +| producer | `src.mcp_client.list_directory` | `src\mcp_client.py` | +| producer | `src.app_controller.rag_collection_name` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.code_path_audit.aggregate_cross_audit_findings` | `src\code_path_audit.py` | +| consumer | `src.api_hook_client.approve_mma_ticket` | `src\api_hook_client.py` | +| consumer | `src.log_registry.update_auto_whitelist_status` | `src\log_registry.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client.run_tier4_analysis` | `src\ai_client.py` | +| consumer | `src.app_controller._flush_to_project_result` | `src\app_controller.py` | +| consumer | `src.code_path_audit.classify_memory_dim` | `src\code_path_audit.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.beads_client.create_bead` | `src\beads_client.py` | +| consumer | `src.command_palette.fuzzy_match` | `src\command_palette.py` | +| consumer | `src.theme_2.set_gamma` | `src\theme_2.py` | +| consumer | `src.multi_agent_conductor.update_task_status` | `src\multi_agent_conductor.py` | +| consumer | `src.code_path_audit.estimate_call_frequency` | `src\code_path_audit.py` | +| consumer | `src.file_cache.walk` | `src\file_cache.py` | +| consumer | `src.code_path_audit.detect_access_pattern` | `src\code_path_audit.py` | +| consumer | `src.api_hooks._get_app_attr` | `src\api_hooks.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.app_controller._handle_mma_state_update` | `src\app_controller.py` | +| consumer | `src.ai_client._list_deepseek_models` | `src\ai_client.py` | +| consumer | `src.api_hooks.__init__` | `src\api_hooks.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | +| consumer | `src.multi_agent_conductor.approve_task` | `src\multi_agent_conductor.py` | +| consumer | `src.gui_2.ui_screenshot_paths` | `src\gui_2.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.ai_client._extract_gemini_thoughts_result` | `src\ai_client.py` | +| consumer | `src.theme_2.get_brightness` | `src\theme_2.py` | +| consumer | `src.history.undo` | `src\history.py` | +| consumer | `src.gui_2._drain_normalize_errors` | `src\gui_2.py` | +| consumer | `src.app_controller._rename_discussion` | `src\app_controller.py` | +| consumer | `src.mcp_client.get_file_slice` | `src\mcp_client.py` | +| consumer | `src.imgui_scopes.tab_bar` | `src\imgui_scopes.py` | +| consumer | `src.session_logger.log_tool_call` | `src\session_logger.py` | +| consumer | `src.gui_2.current_model` | `src\gui_2.py` | +| consumer | `src.rag_engine.embed` | `src\rag_engine.py` | +| consumer | `src.presets.get_preset_scope` | `src\presets.py` | +| consumer | `src.code_path_audit.file_origin_memory_dim` | `src\code_path_audit.py` | +| consumer | `src.rag_engine.__init__` | `src\rag_engine.py` | +| consumer | `src.theme_2.get_gamma` | `src\theme_2.py` | +| consumer | `src.imgui_scopes.style_var` | `src\imgui_scopes.py` | +| consumer | `src.presets._save_file` | `src\presets.py` | +| consumer | `src.aggregate.is_absolute_with_drive` | `src\aggregate.py` | +| consumer | `src.app_controller._topological_sort_tickets_result` | `src\app_controller.py` | +| consumer | `src.app_controller.ui_file_paths` | `src\app_controller.py` | +| consumer | `src.app_controller.rag_emb_provider` | `src\app_controller.py` | +| consumer | `src.code_path_audit.synthesize_aggregate_profile` | `src\code_path_audit.py` | +| consumer | `src.rag_engine._check_existing_index_result` | `src\rag_engine.py` | +| consumer | `src.code_path_audit.read_input_json` | `src\code_path_audit.py` | +| consumer | `src.file_cache.walk` | `src\file_cache.py` | +| consumer | `src.log_registry.is_session_whitelisted` | `src\log_registry.py` | +| consumer | `src.mcp_client.py_update_definition_result` | `src\mcp_client.py` | +| consumer | `src.markdown_helper.render_unindented` | `src\markdown_helper.py` | +| consumer | `src.summary_cache.set_summary` | `src\summary_cache.py` | +| consumer | `src.qwen_adapter.classify_dashscope_error` | `src\qwen_adapter.py` | +| consumer | `src.app_controller._cb_save_view_preset` | `src\app_controller.py` | +| consumer | `src.gui_2.delete_context_preset` | `src\gui_2.py` | +| consumer | `src.imgui_scopes.style_color` | `src\imgui_scopes.py` | +| consumer | `src.app_controller._handle_set_tool_log_dirty` | `src\app_controller.py` | +| consumer | `src.mcp_client.read_file` | `src\mcp_client.py` | +| consumer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| consumer | `src.theme_2.get_contrast` | `src\theme_2.py` | +| consumer | `src.external_editor.launch_diff` | `src\external_editor.py` | +| consumer | `src.paths.get_archive_dir` | `src\paths.py` | +| consumer | `src.theme_models.from_dict` | `src\theme_models.py` | +| consumer | `src.ai_client._classify_minimax_error` | `src\ai_client.py` | +| consumer | `src.rag_engine._chunk_code_result` | `src\rag_engine.py` | +| consumer | `src.app_controller._set_rag_status` | `src\app_controller.py` | +| consumer | `src.gui_2._resolve_font_path_result` | `src\gui_2.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.app_controller.__init__` | `src\app_controller.py` | +| consumer | `src.gui_2._diag_layout_state_ini_text_result` | `src\gui_2.py` | +| consumer | `src.mcp_client._ast_update_definition` | `src\mcp_client.py` | +| consumer | `src.app_controller.mutate_dag` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_symbol_info_result` | `src\mcp_client.py` | +| consumer | `src.app_controller.cb_load_prior_log` | `src\app_controller.py` | +| consumer | `src.rag_engine.embed` | `src\rag_engine.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.save_track_history` | `src\project_manager.py` | +| consumer | `src.ai_client.set_current_tier` | `src\ai_client.py` | +| consumer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| consumer | `src.app_controller._save_fallback_project_result` | `src\app_controller.py` | +| consumer | `src.module_loader._require_warmed` | `src\module_loader.py` | +| consumer | `src.models.load_mcp_config` | `src\models.py` | +| consumer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| consumer | `src.mcp_client.fetch_url_result` | `src\mcp_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.app_controller._handle_clear_summary_cache` | `src\app_controller.py` | +| consumer | `src.gui_2._tier_stream_scroll_sync_result` | `src\gui_2.py` | +| consumer | `src.workspace_manager.delete_profile` | `src\workspace_manager.py` | +| consumer | `src.app_controller._update_gcli_adapter` | `src\app_controller.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.mcp_client.handle_starttag` | `src\mcp_client.py` | +| consumer | `src.theme_2.set_contrast` | `src\theme_2.py` | +| consumer | `src.app_controller._delete_discussion` | `src\app_controller.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.session_logger.open_session` | `src\session_logger.py` | +| consumer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| consumer | `src.code_path_audit_analysis.compute_real_type_alias_coverage` | `src\code_path_audit_analysis.py` | +| consumer | `src.context_presets.load_all` | `src\context_presets.py` | +| consumer | `src.warmup.submit` | `src\warmup.py` | +| consumer | `src.gui_2._render_ast_inspector_file_content_result` | `src\gui_2.py` | +| consumer | `src.ai_client.list_models` | `src\ai_client.py` | +| consumer | `src.ai_client._run_script` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.theme_2.load_from_config` | `src\theme_2.py` | +| consumer | `src.app_controller._handle_click` | `src\app_controller.py` | +| consumer | `src.warmup._record_failure` | `src\warmup.py` | +| consumer | `src.rag_engine._parse_search_response_result` | `src\rag_engine.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.commands._toggle_window` | `src\commands.py` | +| consumer | `src.rag_engine.embed` | `src\rag_engine.py` | +| consumer | `src.mcp_client.ts_cpp_update_definition` | `src\mcp_client.py` | +| consumer | `src.mcp_client.ts_cpp_get_signature` | `src\mcp_client.py` | +| consumer | `src.events.__init__` | `src\events.py` | +| consumer | `src.mcp_client.ts_c_get_code_outline_result` | `src\mcp_client.py` | +| consumer | `src.ai_client._dashscope_exception_from_response` | `src\ai_client.py` | +| consumer | `src.multi_agent_conductor.update_usage` | `src\multi_agent_conductor.py` | +| consumer | `src.ai_client.set_agent_tools` | `src\ai_client.py` | +| consumer | `src.code_path_audit.is_hot_cold_split` | `src\code_path_audit.py` | +| consumer | `src.aggregate.group_files_by_dir` | `src\aggregate.py` | +| consumer | `src.ai_client.run_tier4_patch_generation` | `src\ai_client.py` | +| consumer | `src.app_controller._symbol_resolution_result` | `src\app_controller.py` | +| consumer | `src.ai_client.set_bias_profile` | `src\ai_client.py` | +| consumer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| consumer | `src.code_path_audit_cross_audit._normalize_path` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.mcp_client.async_dispatch` | `src\mcp_client.py` | +| consumer | `src.ai_client.run_tier4_patch_callback` | `src\ai_client.py` | +| consumer | `src.orchestrator_pm.generate_tracks` | `src\orchestrator_pm.py` | +| consumer | `src.command_palette._close_palette` | `src\command_palette.py` | +| consumer | `src.markdown_helper._normalize_nested_list_endings` | `src\markdown_helper.py` | +| consumer | `src.mcp_client.list_directory_result` | `src\mcp_client.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.app_controller.current_provider` | `src\app_controller.py` | +| consumer | `src.code_path_audit_cross_audit.map_finding_to_aggregates` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.mcp_client.py_get_imports` | `src\mcp_client.py` | +| consumer | `src.external_editor.launch_editor` | `src\external_editor.py` | +| consumer | `src.aggregate.compute_file_stats` | `src\aggregate.py` | +| consumer | `src.gui_2.render_discussion_entry_read_mode` | `src\gui_2.py` | +| consumer | `src.mcp_client.search_files` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.P3_pass` | `src\code_path_audit.py` | +| consumer | `src.mcp_client.ts_c_get_signature_result` | `src\mcp_client.py` | +| consumer | `src.code_path_audit_ssdl.render_organization_deductions` | `src\code_path_audit_ssdl.py` | +| consumer | `src.mcp_client.py_get_var_declaration_result` | `src\mcp_client.py` | +| consumer | `src.tool_presets.delete_bias_profile` | `src\tool_presets.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.mcp_client.read_file_result` | `src\mcp_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.gui_2.render_path_field` | `src\gui_2.py` | +| consumer | `src.mcp_client.ts_cpp_get_signature_result` | `src\mcp_client.py` | +| consumer | `src.mcp_client.derive_code_path` | `src\mcp_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.shell_runner.run_powershell` | `src\shell_runner.py` | +| consumer | `src.app_controller._on_ai_stream` | `src\app_controller.py` | +| consumer | `src.code_path_audit_cross_audit.aggregate_findings` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| consumer | `src.summarize.build_summary_markdown` | `src\summarize.py` | +| consumer | `src.markdown_helper._normalize_bullet_delimiters` | `src\markdown_helper.py` | +| consumer | `src.app_controller._api_post_gui` | `src\app_controller.py` | +| consumer | `src.presets.delete_preset` | `src\presets.py` | +| consumer | `src.app_controller._handle_hide_patch_modal` | `src\app_controller.py` | +| consumer | `src.gui_2.ui_file_paths` | `src\gui_2.py` | +| consumer | `src.app_controller._api_confirm_action` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_symbol_info` | `src\mcp_client.py` | +| consumer | `src.code_path_audit_analysis.analyze_consumer_pattern` | `src\code_path_audit_analysis.py` | +| consumer | `src.app_controller._cb_load_track_result` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_hierarchy` | `src\mcp_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.context_presets.delete_preset` | `src\context_presets.py` | +| consumer | `src.warmup._warmup_one` | `src\warmup.py` | +| consumer | `src.gui_2.truncate_entries` | `src\gui_2.py` | +| consumer | `src.api_hook_client.mutate_mma_dag` | `src\api_hook_client.py` | +| consumer | `src.mcp_tool_specs.get_tool_spec` | `src\mcp_tool_specs.py` | +| consumer | `src.aggregate.build_discussion_text` | `src\aggregate.py` | +| consumer | `src.presets.save_preset` | `src\presets.py` | +| consumer | `src.mcp_client.py_set_signature_result` | `src\mcp_client.py` | +| consumer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.performance_monitor.get_history` | `src\performance_monitor.py` | +| consumer | `src.imgui_scopes.menu` | `src\imgui_scopes.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.command_palette.render_palette_modal` | `src\command_palette.py` | +| consumer | `src.api_hooks.__init__` | `src\api_hooks.py` | +| consumer | `src.fuzzy_anchor.create_slice` | `src\fuzzy_anchor.py` | +| consumer | `src.tool_presets._get_path` | `src\tool_presets.py` | +| consumer | `src.app_controller.get_symbol_definition` | `src\app_controller.py` | +| consumer | `src.markdown_helper._render_code_block` | `src\markdown_helper.py` | +| consumer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| consumer | `src.beads_client.update_bead` | `src\beads_client.py` | +| consumer | `src.rag_engine.index_file` | `src\rag_engine.py` | +| consumer | `src.mcp_client.py_set_var_declaration` | `src\mcp_client.py` | +| consumer | `src.app_controller._create_discussion` | `src\app_controller.py` | +| consumer | `src.gui_2._simulate_save_preset` | `src\gui_2.py` | +| consumer | `src.app_controller.delete_session` | `src\app_controller.py` | +| consumer | `src.aggregate.build_markdown` | `src\aggregate.py` | +| consumer | `src.multi_agent_conductor.confirm_execution` | `src\multi_agent_conductor.py` | +| consumer | `src.app_controller._handle_mma_step_approval` | `src\app_controller.py` | +| consumer | `src.imgui_scopes.tree_node_ex` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client.py_check_syntax_result` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.load_frequency_overrides` | `src\code_path_audit.py` | +| consumer | `src.history.push` | `src\history.py` | +| consumer | `src.app_controller.mma_status` | `src\app_controller.py` | +| consumer | `src.app_controller._cb_save_workspace_profile` | `src\app_controller.py` | +| consumer | `src.api_hooks._safe_controller_result` | `src\api_hooks.py` | +| consumer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| consumer | `src.gui_2._on_warmup_complete_callback` | `src\gui_2.py` | +| consumer | `src.rag_engine.delete_documents` | `src\rag_engine.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.command_palette._compute_score` | `src\command_palette.py` | +| consumer | `src.mcp_client.ts_c_get_skeleton` | `src\mcp_client.py` | +| consumer | `src.conductor_tech_lead.topological_sort` | `src\conductor_tech_lead.py` | +| consumer | `src.personas.save_persona` | `src\personas.py` | +| consumer | `src.app_controller._spawn_worker` | `src\app_controller.py` | +| consumer | `src.markdown_helper.render_code` | `src\markdown_helper.py` | +| consumer | `src.app_controller._extract_tool_name` | `src\app_controller.py` | +| consumer | `src.app_controller.__init__` | `src\app_controller.py` | +| consumer | `src.events._make_serializable` | `src\events.py` | +| consumer | `src.multi_agent_conductor.worker_comms_callback` | `src\multi_agent_conductor.py` | +| consumer | `src.code_path_audit.add_field_access` | `src\code_path_audit.py` | +| consumer | `src.command_palette.register` | `src\command_palette.py` | +| consumer | `src.project_manager.branch_discussion` | `src\project_manager.py` | +| consumer | `src.summarize.summarise_file` | `src\summarize.py` | +| consumer | `src.models.mark_blocked` | `src\models.py` | +| consumer | `src.mcp_client.py_set_var_declaration_result` | `src\mcp_client.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.app_controller.approve_ticket` | `src\app_controller.py` | +| consumer | `src.ai_client.run_discussion_compression` | `src\ai_client.py` | +| consumer | `src.command_palette._is_subsequence` | `src\command_palette.py` | +| consumer | `src.file_cache.__init__` | `src\file_cache.py` | +| consumer | `src.app_controller.__init__` | `src\app_controller.py` | +| consumer | `src.paths.get_tracks_dir` | `src\paths.py` | +| consumer | `src.theme_2.get_role_tint` | `src\theme_2.py` | +| consumer | `src.app_controller._do_project_switch` | `src\app_controller.py` | +| consumer | `src.patch_modal.apply_patch` | `src\patch_modal.py` | +| consumer | `src.thinking_parser.parse_thinking_trace` | `src\thinking_parser.py` | +| consumer | `src.app_controller._handle_show_track_proposal` | `src\app_controller.py` | +| consumer | `src.app_controller.load_context_preset` | `src\app_controller.py` | +| consumer | `src.ai_client._run_tier4_patch_callback_result` | `src\ai_client.py` | +| consumer | `src.code_path_audit_ssdl.detect_nil_check_pattern` | `src\code_path_audit_ssdl.py` | +| consumer | `src.mcp_client.py_get_imports_result` | `src\mcp_client.py` | +| consumer | `src.markdown_helper.render_unindented` | `src\markdown_helper.py` | +| consumer | `src.ai_client._set_tool_preset_result` | `src\ai_client.py` | +| consumer | `src.app_controller._handle_set_value` | `src\app_controller.py` | +| consumer | `src.code_path_audit_ssdl.count_branches_in_function` | `src\code_path_audit_ssdl.py` | +| consumer | `src.tool_presets.save_bias_profile` | `src\tool_presets.py` | +| consumer | `src.app_controller.parse_symbols` | `src\app_controller.py` | +| consumer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| consumer | `src.ai_client._run_tier4_analysis_result` | `src\ai_client.py` | +| consumer | `src.multi_agent_conductor.confirm_spawn` | `src\multi_agent_conductor.py` | +| consumer | `src.imgui_scopes.child` | `src\imgui_scopes.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.resolve_paths` | `src\aggregate.py` | +| consumer | `src.app_controller.inject_context` | `src\app_controller.py` | +| consumer | `src.mcp_client.ts_c_get_code_outline` | `src\mcp_client.py` | +| consumer | `src.mcp_client.py_get_definition` | `src\mcp_client.py` | +| consumer | `src.mcp_client.set_file_slice` | `src\mcp_client.py` | +| consumer | `src.models.get` | `src\models.py` | +| consumer | `src.mcp_client.search_files_result` | `src\mcp_client.py` | +| consumer | `src.ai_client._extract_minimax_reasoning` | `src\ai_client.py` | +| consumer | `src.mcp_client.py_update_definition` | `src\mcp_client.py` | +| consumer | `src.mcp_client.find_in_scope` | `src\mcp_client.py` | +| consumer | `src.code_path_audit._atom` | `src\code_path_audit.py` | +| consumer | `src.commands.register` | `src\commands.py` | +| consumer | `src.mcp_client.handle_data` | `src\mcp_client.py` | +| consumer | `src.theme_2.set_brightness` | `src\theme_2.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.rag_engine.__init__` | `src\rag_engine.py` | +| consumer | `src.app_controller._cb_start_track` | `src\app_controller.py` | +| consumer | `src.code_path_audit_ssdl._resolve_filepath` | `src\code_path_audit_ssdl.py` | +| consumer | `src.workspace_manager._save_file` | `src\workspace_manager.py` | +| consumer | `src.app_controller._append_tool_log` | `src\app_controller.py` | +| consumer | `src.mcp_client.ts_cpp_get_code_outline_result` | `src\mcp_client.py` | +| consumer | `src.diff_viewer.get_line_color` | `src\diff_viewer.py` | +| consumer | `src.app_controller._cb_delete_persona` | `src\app_controller.py` | +| consumer | `src.context_presets.save_preset` | `src\context_presets.py` | +| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._test_callback_func_write_to_file` | `src\app_controller.py` | +| consumer | `src.external_editor.create_temp_modified_file` | `src\external_editor.py` | +| consumer | `src.commands.__getattr__` | `src\commands.py` | +| consumer | `src.events.emit` | `src\events.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client._get_symbol_node` | `src\mcp_client.py` | +| consumer | `src.summary_cache.get_file_hash` | `src\summary_cache.py` | +| consumer | `src.app_controller._apply_preset` | `src\app_controller.py` | +| consumer | `src.app_controller._resolve_log_ref` | `src\app_controller.py` | +| consumer | `src.openai_compatible._send_streaming` | `src\openai_compatible.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.app_controller._list_models_for_provider_result` | `src\app_controller.py` | +| consumer | `src.app_controller._cb_ticket_retry` | `src\app_controller.py` | +| consumer | `src.project_manager.load_track_state` | `src\project_manager.py` | +| consumer | `src.file_cache.walk` | `src\file_cache.py` | +| consumer | `src.command_palette._count_gaps` | `src\command_palette.py` | +| consumer | `src.mcp_client.web_search_result` | `src\mcp_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.mcp_client.py_get_code_outline` | `src\mcp_client.py` | +| consumer | `src.app_controller._handle_custom_callback` | `src\app_controller.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.gemini_cli_adapter.send` | `src\gemini_cli_adapter.py` | +| consumer | `src.theme_2.get_color` | `src\theme_2.py` | +| consumer | `src.diff_viewer.parse_diff` | `src\diff_viewer.py` | +| consumer | `src.log_registry.__getitem__` | `src\log_registry.py` | +| consumer | `src.app_controller.kill_worker` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_signature` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.build_pcg` | `src\code_path_audit.py` | +| consumer | `src.app_controller._handle_set_mma_status` | `src\app_controller.py` | +| consumer | `src.api_hooks._parse_float_result` | `src\api_hooks.py` | +| consumer | `src.mcp_client.py_get_docstring` | `src\mcp_client.py` | +| consumer | `src.api_hook_client.kill_mma_worker` | `src\api_hook_client.py` | +| consumer | `src.ai_client._classify_anthropic_error` | `src\ai_client.py` | +| consumer | `src.app_controller.resolve_pending_action` | `src\app_controller.py` | +| consumer | `src.external_editor.build_diff_command` | `src\external_editor.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.app_controller._record_startup_timeline_error` | `src\app_controller.py` | +| consumer | `src.rag_engine.add_documents` | `src\rag_engine.py` | +| consumer | `src.history.jump_to_undo` | `src\history.py` | +| consumer | `src.mcp_client.derive_code_path_result` | `src\mcp_client.py` | +| consumer | `src.app_controller._on_api_event` | `src\app_controller.py` | +| consumer | `src.project_manager.default_project` | `src\project_manager.py` | +| consumer | `src.mcp_client.get_file_slice_result` | `src\mcp_client.py` | +| consumer | `src.rag_engine._get_file_mtime_result` | `src\rag_engine.py` | +| consumer | `src.app_controller._api_delete_session` | `src\app_controller.py` | +| consumer | `src.code_path_audit_ssdl.render_ssdl_rollup` | `src\code_path_audit_ssdl.py` | +| consumer | `src.theme_2.reset_tone_mapping` | `src\theme_2.py` | +| consumer | `src.ai_client._should_cache_gemini_result` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.command_palette._is_contiguous` | `src\command_palette.py` | +| consumer | `src.warmup._record_success` | `src\warmup.py` | +| consumer | `src.api_hooks._set_app_attr` | `src\api_hooks.py` | +| consumer | `src.app_controller._handle_clear_ask` | `src\app_controller.py` | +| consumer | `src.app_controller.rag_mcp_server` | `src\app_controller.py` | +| consumer | `src.ai_client.set_base_system_prompt` | `src\ai_client.py` | +| consumer | `src.ai_client._set_minimax_provider_result` | `src\ai_client.py` | +| consumer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| consumer | `src.app_controller._fetch_models` | `src\app_controller.py` | +| consumer | `src.ai_client._count_gemini_tokens_for_stats_result` | `src\ai_client.py` | +| consumer | `src.gui_2._cb_kill_ticket` | `src\gui_2.py` | +| consumer | `src.multi_agent_conductor._count_tokens` | `src\multi_agent_conductor.py` | +| consumer | `src.warmup._log_stderr` | `src\warmup.py` | +| consumer | `src.gui_2._ticket_id_max_int_result` | `src\gui_2.py` | +| consumer | `src.ai_client.run_with_tool_loop` | `src\ai_client.py` | +| consumer | `src.api_hook_client.get_text_value` | `src\api_hook_client.py` | +| consumer | `src.ai_client.set_project_context_marker` | `src\ai_client.py` | +| consumer | `src.log_registry.from_dict` | `src\log_registry.py` | +| consumer | `src.file_cache.get_targeted_view` | `src\file_cache.py` | +| consumer | `src.markdown_helper.render` | `src\markdown_helper.py` | +| consumer | `src.markdown_table._split_row` | `src\markdown_table.py` | +| consumer | `src.code_path_audit_cross_audit._all_function_refs` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.theme_nerv_fx.update` | `src\theme_nerv_fx.py` | +| consumer | `src.api_hooks_helpers._get_app_attr` | `src\api_hooks_helpers.py` | +| consumer | `src.tool_presets.delete_preset` | `src\tool_presets.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.mcp_client.edit_file_result` | `src\mcp_client.py` | +| consumer | `src.app_controller.current_model` | `src\app_controller.py` | +| consumer | `src.app_controller.confirm_action` | `src\app_controller.py` | +| consumer | `src.beads_client._write_beads` | `src\beads_client.py` | +| consumer | `src.outline_tool.outline` | `src\outline_tool.py` | +| consumer | `src.summarize._summarise_markdown` | `src\summarize.py` | +| consumer | `src.gui_2._test_callback_func_write_to_file` | `src\gui_2.py` | +| consumer | `src.diff_viewer.parse_hunk_header` | `src\diff_viewer.py` | +| consumer | `src.app_controller._cb_ticket_skip` | `src\app_controller.py` | +| consumer | `src.file_cache.get_skeleton` | `src\file_cache.py` | +| consumer | `src.mcp_client._ast_get_definition` | `src\mcp_client.py` | +| consumer | `src.app_controller._api_get_key` | `src\app_controller.py` | +| consumer | `src.rag_engine.delete_documents_by_path` | `src\rag_engine.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.vendor_capabilities.list_models_for_vendor` | `src\vendor_capabilities.py` | +| consumer | `src.fuzzy_anchor.resolve_slice` | `src\fuzzy_anchor.py` | +| consumer | `src.markdown_helper.render` | `src\markdown_helper.py` | +| consumer | `src.app_controller._handle_drag` | `src\app_controller.py` | +| consumer | `src.rag_engine.search` | `src\rag_engine.py` | +| consumer | `src.markdown_helper._on_open_link` | `src\markdown_helper.py` | +| consumer | `src.cost_tracker.estimate_cost` | `src\cost_tracker.py` | +| consumer | `src.mcp_client.py_get_code_outline_result` | `src\mcp_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.performance_monitor.scope` | `src\performance_monitor.py` | +| consumer | `src.app_controller._rag_search_result` | `src\app_controller.py` | +| consumer | `src.models.__getattr__` | `src\models.py` | +| consumer | `src.session_logger.log_comms` | `src\session_logger.py` | +| consumer | `src.code_path_audit_ssdl.compute_effective_codepaths` | `src\code_path_audit_ssdl.py` | +| consumer | `src.code_path_audit.dominant_pattern` | `src\code_path_audit.py` | +| consumer | `src.paths.get_track_state_dir` | `src\paths.py` | +| consumer | `src.mcp_client.configure` | `src\mcp_client.py` | +| consumer | `src.theme_2.apply_syntax_palette` | `src\theme_2.py` | +| consumer | `src.startup_profiler.phase` | `src\startup_profiler.py` | +| consumer | `src.app_controller._deserialize_active_track_result` | `src\app_controller.py` | +| consumer | `src.log_pruner.__init__` | `src\log_pruner.py` | +| consumer | `src.rag_engine._chunk_text` | `src\rag_engine.py` | +| consumer | `src.file_cache.deep_search` | `src\file_cache.py` | +| consumer | `src.app_controller.rag_source` | `src\app_controller.py` | +| consumer | `src.markdown_table.parse_tables` | `src\markdown_table.py` | +| consumer | `src.gui_2._load_fonts_main_result` | `src\gui_2.py` | +| consumer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| consumer | `src.aggregate.build_discussion_section` | `src\aggregate.py` | +| consumer | `src.gui_2._on_warmup_complete_callback_result` | `src\gui_2.py` | +| consumer | `src.app_controller.start_services` | `src\app_controller.py` | +| consumer | `src.api_hook_client.spawn_mma_worker` | `src\api_hook_client.py` | +| consumer | `src.code_path_audit.P2_pass` | `src\code_path_audit.py` | +| consumer | `src.imgui_scopes.window` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client.web_search` | `src\mcp_client.py` | +| consumer | `src.log_registry.get` | `src\log_registry.py` | +| consumer | `src.code_path_audit.detect_frequency_from_entry_point` | `src\code_path_audit.py` | +| consumer | `src.commands._toggle_attr` | `src\commands.py` | +| consumer | `src.mcp_client.handle_starttag` | `src\mcp_client.py` | +| consumer | `src.gui_2.render_thinking_trace` | `src\gui_2.py` | +| consumer | `src.api_hooks.__init__` | `src\api_hooks.py` | +| consumer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| consumer | `src.conductor_tech_lead.generate_tickets` | `src\conductor_tech_lead.py` | +| consumer | `src.gui_2.__getattr__` | `src\gui_2.py` | +| consumer | `src.app_controller._handle_select_list_item` | `src\app_controller.py` | +| consumer | `src.theme_models.from_dict` | `src\theme_models.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.session_logger.reset_session` | `src\session_logger.py` | +| consumer | `src.personas._save_file` | `src\personas.py` | +| consumer | `src.code_path_audit_ssdl.render_ssdl_sketch` | `src\code_path_audit_ssdl.py` | +| consumer | `src.file_cache.get_curated_view` | `src\file_cache.py` | +| consumer | `src.tool_presets._write_raw` | `src\tool_presets.py` | +| consumer | `src.file_cache.deep_search` | `src\file_cache.py` | +| consumer | `src.api_hooks_helpers._has_app_attr` | `src\api_hooks_helpers.py` | +| consumer | `src.aggregate.build_screenshots_section` | `src\aggregate.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.imgui_scopes.id` | `src\imgui_scopes.py` | +| consumer | `src.markdown_helper._normalize_list_continuations` | `src\markdown_helper.py` | +| consumer | `src.gemini_cli_adapter.__init__` | `src\gemini_cli_adapter.py` | +| consumer | `src.app_controller._cb_apply_view_preset` | `src\app_controller.py` | +| consumer | `src.history.redo` | `src\history.py` | +| consumer | `src.code_path_audit.compute_result_coverage` | `src\code_path_audit.py` | +| consumer | `src.summary_cache.__init__` | `src\summary_cache.py` | +| consumer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| consumer | `src.app_controller._handle_refresh_from_project` | `src\app_controller.py` | +| consumer | `src.gui_2._set_context_files` | `src\gui_2.py` | +| consumer | `src.theme_2.apply` | `src\theme_2.py` | +| consumer | `src.app_controller._handle_ask` | `src\app_controller.py` | +| consumer | `src.log_registry.set_session_start_time` | `src\log_registry.py` | +| consumer | `src.code_path_audit._resolve_aliases` | `src\code_path_audit.py` | +| consumer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.markdown_table._is_table_at` | `src\markdown_table.py` | +| consumer | `src.ai_client._list_gemini_models_result` | `src\ai_client.py` | +| consumer | `src.code_path_audit.run_audit` | `src\code_path_audit.py` | +| consumer | `src.gui_2.render_text_viewer` | `src\gui_2.py` | +| consumer | `src.mcp_client.get_tree_result` | `src\mcp_client.py` | +| consumer | `src.markdown_helper.render_code` | `src\markdown_helper.py` | +| consumer | `src.mcp_client.ts_cpp_get_definition_result` | `src\mcp_client.py` | +| consumer | `src.file_cache.get_cached_tree` | `src\file_cache.py` | +| consumer | `src.mcp_client.async_dispatch` | `src\mcp_client.py` | +| consumer | `src.app_controller._cb_delete_bias_profile` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_class_summary_result` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.P1_pass` | `src\code_path_audit.py` | +| consumer | `src.session_logger.log_api_hook` | `src\session_logger.py` | +| consumer | `src.code_path_audit_analysis.aggregate_pattern_from_consumers` | `src\code_path_audit_analysis.py` | +| consumer | `src.theme_models.with_scope` | `src\theme_models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.mcp_client.get_file_summary` | `src\mcp_client.py` | +| consumer | `src.imgui_scopes.tab_item` | `src\imgui_scopes.py` | +| consumer | `src.openai_compatible._classify_openai_compatible_error` | `src\openai_compatible.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.app_controller._on_tool_log` | `src\app_controller.py` | +| consumer | `src.personas.get_persona_scope` | `src\personas.py` | +| consumer | `src.file_cache.update_definition` | `src\file_cache.py` | +| consumer | `src.app_controller._cb_load_workspace_profile` | `src\app_controller.py` | +| consumer | `src.code_path_audit.to_dsl_v2` | `src\code_path_audit.py` | +| consumer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| consumer | `src.summarize._summarise_python` | `src\summarize.py` | +| consumer | `src.code_path_audit.compute_decomposition_cost` | `src\code_path_audit.py` | +| consumer | `src.app_controller.__getattr__` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_skeleton_result` | `src\mcp_client.py` | +| consumer | `src.mcp_client.handle_data` | `src\mcp_client.py` | +| consumer | `src.file_cache.get_definition` | `src\file_cache.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client._ast_get_signature` | `src\mcp_client.py` | +| consumer | `src.file_cache._get_mtime_safe` | `src\file_cache.py` | +| consumer | `src.code_path_audit_analysis.analyze_producer_size` | `src\code_path_audit_analysis.py` | +| consumer | `src.imgui_scopes.table` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client.get_tree` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.code_path_audit_v2` | `src\code_path_audit.py` | +| consumer | `src.code_path_audit_cross_audit._aggregate_for_fqname` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.project_manager.clean_nones` | `src\project_manager.py` | +| consumer | `src.mcp_client.py_set_signature` | `src\mcp_client.py` | +| consumer | `src.ai_client.set_custom_system_prompt` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.gui_2.__setattr__` | `src\gui_2.py` | +| consumer | `src.models._clean_nones` | `src\models.py` | +| consumer | `src.markdown_helper.detect_language` | `src\markdown_helper.py` | +| consumer | `src.mcp_client.fetch_url` | `src\mcp_client.py` | +| consumer | `src.mcp_client.handle_endtag` | `src\mcp_client.py` | +| consumer | `src.performance_monitor._add_to_history` | `src\performance_monitor.py` | +| consumer | `src.project_manager.promote_take` | `src\project_manager.py` | +| consumer | `src.project_manager.save_track_state` | `src\project_manager.py` | +| consumer | `src.app_controller._init_ai_and_hooks` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_docstring_result` | `src\mcp_client.py` | +| consumer | `src.outline_tool.get_outline` | `src\outline_tool.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.models.parse_history_entries` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| consumer | `src.mcp_client.set_file_slice_result` | `src\mcp_client.py` | +| consumer | `src.api_hook_client.request_confirmation` | `src\api_hook_client.py` | +| consumer | `src.code_path_audit_analysis.compute_real_decomposition_cost` | `src\code_path_audit_analysis.py` | +| consumer | `src.ai_client._classify_deepseek_error` | `src\ai_client.py` | +| consumer | `src.app_controller._report_worker_error` | `src\app_controller.py` | +| consumer | `src.paths.get_conductor_dir` | `src\paths.py` | +| consumer | `src.events.put` | `src\events.py` | +| consumer | `src.hot_reloader.capture_state` | `src\hot_reloader.py` | +| consumer | `src.gui_2.__init__` | `src\gui_2.py` | +| consumer | `src.gui_2.render_discussion_entry` | `src\gui_2.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.code_path_audit.parse_dsl_v2` | `src\code_path_audit.py` | +| consumer | `src.app_controller._handle_ticket_completed` | `src\app_controller.py` | +| consumer | `src.app_controller._cb_create_track` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_check_syntax` | `src\mcp_client.py` | +| consumer | `src.mcp_client.edit_file` | `src\mcp_client.py` | +| consumer | `src.app_controller._confirm_and_run` | `src\app_controller.py` | +| consumer | `src.project_manager.parse_ts` | `src\project_manager.py` | +| consumer | `src.startup_profiler._log_phase_output` | `src\startup_profiler.py` | +| consumer | `src.app_controller._set_mcp_config_json_result` | `src\app_controller.py` | +| consumer | `src.app_controller.get_api_key` | `src\app_controller.py` | +| consumer | `src.mcp_client._ast_get_skeleton` | `src\mcp_client.py` | +| consumer | `src.code_path_audit_analysis.estimate_struct_size` | `src\code_path_audit_analysis.py` | +| consumer | `src.code_path_audit.run_all_cross_audit_reads` | `src\code_path_audit.py` | +| consumer | `src.imgui_scopes.popup_modal` | `src\imgui_scopes.py` | +| consumer | `src.app_controller.mcp_config_json` | `src\app_controller.py` | +| consumer | `src.app_controller._handle_set_ai_status` | `src\app_controller.py` | +| consumer | `src.app_controller._handle_mma_stream` | `src\app_controller.py` | +| consumer | `src.mcp_client._ast_get_code_outline` | `src\mcp_client.py` | +| consumer | `src.vendor_capabilities.get_capabilities` | `src\vendor_capabilities.py` | +| consumer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| consumer | `src.multi_agent_conductor.kill_worker` | `src\multi_agent_conductor.py` | +| consumer | `src.api_hook_client.inject_context` | `src\api_hook_client.py` | +| consumer | `src.imgui_scopes.node` | `src\imgui_scopes.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.app_controller.post_api_session` | `src\app_controller.py` | +| consumer | `src.mcp_client.dispatch` | `src\mcp_client.py` | +| consumer | `src.session_logger.log_tool_output` | `src\session_logger.py` | +| consumer | `src.app_controller._cb_save_bias_profile` | `src\app_controller.py` | +| consumer | `src.ai_client.set_provider` | `src\ai_client.py` | +| consumer | `src.code_path_audit.add_producer` | `src\code_path_audit.py` | +| consumer | `src.app_controller._on_performance_alert` | `src\app_controller.py` | +| consumer | `src.file_cache.get_code_outline` | `src\file_cache.py` | +| consumer | `src.file_cache.parse` | `src\file_cache.py` | +| consumer | `src.gui_2._render_ast_inspector_outline_result` | `src\gui_2.py` | +| consumer | `src.log_registry.__init__` | `src\log_registry.py` | +| consumer | `src.rag_engine._read_file_content_result` | `src\rag_engine.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.api_hook_client.__init__` | `src\api_hook_client.py` | +| consumer | `src.hot_reloader.reload` | `src\hot_reloader.py` | +| consumer | `src.mcp_client.get_git_diff` | `src\mcp_client.py` | +| consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.rag_engine.__init__` | `src\rag_engine.py` | +| consumer | `src.summary_cache.get_summary` | `src\summary_cache.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | +| consumer | `src.file_cache.get_signature` | `src\file_cache.py` | +| consumer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| consumer | `src.mcp_client.ts_cpp_get_code_outline` | `src\mcp_client.py` | +| consumer | `src.mcp_client.ts_c_update_definition` | `src\mcp_client.py` | +| consumer | `src.app_controller._handle_refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.multi_agent_conductor._push_state` | `src\multi_agent_conductor.py` | +| consumer | `src.ai_client._truncate_tool_output` | `src\ai_client.py` | +| consumer | `src.gui_2.render_tier_stream_panel` | `src\gui_2.py` | +| consumer | `src.mcp_client._build_tree` | `src\mcp_client.py` | +| consumer | `src.api_hook_client.get_indicator_state` | `src\api_hook_client.py` | +| consumer | `src.personas._get_path` | `src\personas.py` | +| consumer | `src.app_controller._on_warmup_complete_for_timeline` | `src\app_controller.py` | +| consumer | `src.project_manager.get_git_commit` | `src\project_manager.py` | +| consumer | `src.mcp_client.py_get_signature_result` | `src\mcp_client.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.app_controller.set_vendor_quota` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_skeleton` | `src\mcp_client.py` | +| consumer | `src.events.on` | `src\events.py` | +| consumer | `src.mcp_client.py_get_var_declaration` | `src\mcp_client.py` | +| consumer | `src.app_controller._switch_project` | `src\app_controller.py` | +| consumer | `src.thinking_parser.extract_colon_blocks` | `src\thinking_parser.py` | +| consumer | `src.performance_monitor.start_component` | `src\performance_monitor.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.mcp_client.py_find_usages_result` | `src\mcp_client.py` | +| consumer | `src.app_controller._load_project_from_path_result` | `src\app_controller.py` | +| consumer | `src.qwen_adapter.build_dashscope_tools` | `src\qwen_adapter.py` | +| consumer | `src.ai_client._execute_tool_calls_concurrently` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.gui_2._save_context_preset_force` | `src\gui_2.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.command_palette._execute` | `src\command_palette.py` | +| consumer | `src.models.mark_manual_block` | `src\models.py` | +| consumer | `src.gui_2._set_external_editor_default` | `src\gui_2.py` | +| consumer | `src.personas.delete_persona` | `src\personas.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| consumer | `src.multi_agent_conductor.parse_json_tickets` | `src\multi_agent_conductor.py` | +| consumer | `src.theme_2.render_post_fx` | `src\theme_2.py` | +| consumer | `src.dag_engine.update_task_status` | `src\dag_engine.py` | +| consumer | `src.app_controller._on_sigint` | `src\app_controller.py` | +| consumer | `src.ai_client.set_tool_preset` | `src\ai_client.py` | +| consumer | `src.openai_compatible._send_blocking` | `src\openai_compatible.py` | +| consumer | `src.aggregate.find_next_increment` | `src\aggregate.py` | +| consumer | `src.gui_2.render_heavy_text` | `src\gui_2.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.multi_agent_conductor.clutch_callback` | `src\multi_agent_conductor.py` | +| consumer | `src.gui_2.__init__` | `src\gui_2.py` | +| consumer | `src.hot_reloader.restore_state` | `src\hot_reloader.py` | +| consumer | `src.api_hook_client.get_value` | `src\api_hook_client.py` | +| consumer | `src.summarize._summarise_toml` | `src\summarize.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.app_controller._switch_discussion` | `src\app_controller.py` | +| consumer | `src.mcp_client._send_request` | `src\mcp_client.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.app_controller._handle_right_click` | `src\app_controller.py` | +| consumer | `src.app_controller._handle_show_patch_modal` | `src\app_controller.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.theme_models.load_themes_from_toml` | `src\theme_models.py` | +| consumer | `src.app_controller._cb_delete_view_preset` | `src\app_controller.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.app_controller.get_session` | `src\app_controller.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.mcp_client.get_git_diff_result` | `src\mcp_client.py` | +| consumer | `src.api_hooks.log_message` | `src\api_hooks.py` | +| consumer | `src.theme_2.save_to_config` | `src\theme_2.py` | +| consumer | `src.warmup._fire_callback` | `src\warmup.py` | +| consumer | `src.performance_monitor._get_avg` | `src\performance_monitor.py` | +| consumer | `src.mcp_client.ts_cpp_update_definition_result` | `src\mcp_client.py` | +| consumer | `src.app_controller.rag_mcp_tool` | `src\app_controller.py` | +| consumer | `src.mcp_client.ts_c_get_skeleton_result` | `src\mcp_client.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.app_controller._cb_delete_workspace_profile` | `src\app_controller.py` | +| consumer | `src.gui_2._cb_block_ticket` | `src\gui_2.py` | +| consumer | `src.mcp_client._resolve_and_check_result` | `src\mcp_client.py` | +| consumer | `src.mcp_client.ts_c_get_definition` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.load_memory_dim_overrides` | `src\code_path_audit.py` | +| consumer | `src.gui_2._render_window_if_open` | `src\gui_2.py` | +| consumer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| consumer | `src.mcp_client.ts_c_get_signature` | `src\mcp_client.py` | +| consumer | `src.performance_monitor.end_component` | `src\performance_monitor.py` | +| consumer | `src.api_hooks._has_app_attr` | `src\api_hooks.py` | +| consumer | `src.markdown_helper._is_likely_lang_tag` | `src\markdown_helper.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.openai_compatible._to_typed_tool_call` | `src\openai_compatible.py` | +| consumer | `src.code_path_audit.add_consumer` | `src\code_path_audit.py` | +| consumer | `src.ai_client.run_subagent_summarization` | `src\ai_client.py` | +| consumer | `src.hot_reloader.reload_all` | `src\hot_reloader.py` | +| consumer | `src.api_hooks_helpers._set_app_attr` | `src\api_hooks_helpers.py` | +| consumer | `src.mcp_client.py_get_definition_result` | `src\mcp_client.py` | +| consumer | `src.gui_2._populate_auto_slices_outline_result` | `src\gui_2.py` | +| consumer | `src.ai_client._list_minimax_models_result` | `src\ai_client.py` | +| consumer | `src.mcp_client.list_directory` | `src\mcp_client.py` | +| consumer | `src.multi_agent_conductor.run_worker_lifecycle` | `src\multi_agent_conductor.py` | +| consumer | `src.mcp_client.ts_cpp_get_skeleton_result` | `src\mcp_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.performance_monitor.__exit__` | `src\performance_monitor.py` | +| consumer | `src.theme_2._get_tm` | `src\theme_2.py` | +| consumer | `src.synthesis_formatter.format_takes_diff` | `src\synthesis_formatter.py` | +| consumer | `src.openai_compatible.send_openai_compatible` | `src\openai_compatible.py` | +| consumer | `src.ai_client._try_warm_sdk_result` | `src\ai_client.py` | +| consumer | `src.ai_client._set_bias_profile_result` | `src\ai_client.py` | +| consumer | `src.theme_2._tone_map` | `src\theme_2.py` | +| consumer | `src.markdown_helper._get_language_id` | `src\markdown_helper.py` | +| consumer | `src.fuzzy_anchor.get_context` | `src\fuzzy_anchor.py` | +| consumer | `src.gui_2.render_selectable_label` | `src\gui_2.py` | +| consumer | `src.history.from_dict` | `src\history.py` | +| consumer | `src.app_controller._handle_mma_respond` | `src\app_controller.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client.handle_endtag` | `src\mcp_client.py` | +| consumer | `src.patch_modal.request_patch_approval` | `src\patch_modal.py` | +| consumer | `src.code_path_audit_analysis._field_names_for_aggregate` | `src\code_path_audit_analysis.py` | +| consumer | `src.code_path_audit_analysis._analyze_function_field_accesses` | `src\code_path_audit_analysis.py` | +| consumer | `src.summarize._summarise_generic` | `src\summarize.py` | +| consumer | `src.code_path_audit.generate_rationale` | `src\code_path_audit.py` | +| consumer | `src.summarize.summarise_items` | `src\summarize.py` | +| consumer | `src.file_cache.deep_search` | `src\file_cache.py` | +| consumer | `src.provider_state.get_history` | `src\provider_state.py` | +| consumer | `src.session_logger.log_cli_call` | `src\session_logger.py` | +| consumer | `src.log_registry.update_session_metadata` | `src\log_registry.py` | +| consumer | `src.app_controller._api_post_api_session` | `src\app_controller.py` | +| consumer | `src.code_path_audit_ssdl.suggest_defusing_technique` | `src\code_path_audit_ssdl.py` | +| consumer | `src.gemini_cli_adapter.count_tokens` | `src\gemini_cli_adapter.py` | +| consumer | `src.gui_2._cb_unblock_ticket` | `src\gui_2.py` | +| consumer | `src.theme_models.load_themes_from_dir` | `src\theme_models.py` | +| consumer | `src.external_editor.get_editor` | `src\external_editor.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.ai_client._classify_gemini_error` | `src\ai_client.py` | +| consumer | `src.app_controller._execute_gui_task_result` | `src\app_controller.py` | +| consumer | `src.gui_2.request_patch_from_tier4_result` | `src\gui_2.py` | +| consumer | `src.imgui_scopes.popup` | `src\imgui_scopes.py` | +| consumer | `src.multi_agent_conductor.spawn` | `src\multi_agent_conductor.py` | +| consumer | `src.app_controller._handle_ticket_started` | `src\app_controller.py` | +| consumer | `src.project_manager.load_track_history` | `src\project_manager.py` | +| consumer | `src.ai_client._get_gemini_history_list` | `src\ai_client.py` | +| consumer | `src.command_palette._starts_at_word_boundary` | `src\command_palette.py` | +| consumer | `src.mcp_client.py_find_usages` | `src\mcp_client.py` | +| consumer | `src.multi_agent_conductor.run` | `src\multi_agent_conductor.py` | +| consumer | `src.mcp_client.ts_c_update_definition_result` | `src\mcp_client.py` | +| consumer | `src.theme_models.load_theme_file` | `src\theme_models.py` | +| consumer | `src.app_controller.post_gui` | `src\app_controller.py` | +| consumer | `src.log_registry.register_session` | `src\log_registry.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.gui_2.load_context_preset` | `src\gui_2.py` | +| consumer | `src.mcp_client.py_get_class_summary` | `src\mcp_client.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | +| consumer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| consumer | `src.performance_monitor.__init__` | `src\performance_monitor.py` | +| consumer | `src.app_controller._cb_load_track` | `src\app_controller.py` | +| consumer | `src.warmup._log_canary` | `src\warmup.py` | +| consumer | `src.app_controller._cb_save_persona` | `src\app_controller.py` | +| consumer | `src.app_controller._parse_token_history_first_ts_result` | `src\app_controller.py` | +| consumer | `src.code_path_audit_cross_audit._file_to_aggregates` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.gui_2.current_provider` | `src\gui_2.py` | +| consumer | `src.dag_engine.approve_task` | `src\dag_engine.py` | +| consumer | `src.api_hooks._serialize_for_api` | `src\api_hooks.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.code_path_audit_cross_audit.build_cross_audit_findings_for_aggregate` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.rag_engine._search_mcp` | `src\rag_engine.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.mcp_client.call_tool` | `src\mcp_client.py` | +| consumer | `src.theme_2.get_syntax_palette_for_theme` | `src\theme_2.py` | +| consumer | `src.mcp_client.ts_c_get_definition_result` | `src\mcp_client.py` | +| consumer | `src.app_controller.rag_collection_name` | `src\app_controller.py` | +| consumer | `src.thinking_parser.extract_tags` | `src\thinking_parser.py` | +| consumer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| consumer | `src.app_controller._handle_set_comms_dirty` | `src\app_controller.py` | +| consumer | `src.multi_agent_conductor.stream_callback` | `src\multi_agent_conductor.py` | +| consumer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| consumer | `src.workspace_manager._get_path` | `src\workspace_manager.py` | +| consumer | `src.gui_2._capture_workspace_profile` | `src\gui_2.py` | +| consumer | `src.gui_2.cb_load_prior_log` | `src\gui_2.py` | +| consumer | `src.gui_2.request_patch_from_tier4` | `src\gui_2.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.app_controller.ai_status` | `src\app_controller.py` | +| consumer | `src.app_controller._cb_new_project_automated` | `src\app_controller.py` | +| consumer | `src.mcp_client.ts_cpp_get_skeleton` | `src\mcp_client.py` | +| consumer | `src.ai_client._chunk_text` | `src\ai_client.py` | +| consumer | `src.app_controller._handle_mma_spawn_approval` | `src\app_controller.py` | +| consumer | `src.app_controller._handle_bead_updated` | `src\app_controller.py` | +| consumer | `src.tool_presets.save_preset` | `src\tool_presets.py` | +| consumer | `src.workspace_manager.save_profile` | `src\workspace_manager.py` | +| consumer | `src.code_path_audit_analysis.extract_real_optimization_candidates` | `src\code_path_audit_analysis.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client.get_file_summary_result` | `src\mcp_client.py` | +| consumer | `src.mcp_client.ts_cpp_get_definition` | `src\mcp_client.py` | +| consumer | `src.ai_client._run_tier4_patch_generation_result` | `src\ai_client.py` | +| consumer | `src.code_path_audit_analysis.analyze_consumer_fields` | `src\code_path_audit_analysis.py` | +| consumer | `src.diff_viewer.apply_patch_to_file` | `src\diff_viewer.py` | +| consumer | `src.gui_2.__getattr__` | `src\gui_2.py` | +| consumer | `src.multi_agent_conductor._queue_put` | `src\multi_agent_conductor.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.paths._resolve_path` | `src\paths.py` | +| consumer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| consumer | `src.command_palette.get` | `src\command_palette.py` | +| consumer | `src.code_path_audit.find_enclosing_function` | `src\code_path_audit.py` | +| consumer | `src.app_controller._handle_ai_response` | `src\app_controller.py` | + +## FileItem (117 producers + 66 consumers) + +| role | fqname | file | +|---|---|---| +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | | producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | | producer | `src.models.to_dict` | `src\models.py` | | producer | `src.models.to_dict` | `src\models.py` | | producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | -| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | | producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | | producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | | producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | -| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.aggregate.build_file_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | | producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | -| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | -| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | -| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | -| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | | consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | -| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | | consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | | consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | | consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | | consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | | consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | -| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | | consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | -| consumer | `src.aggregate.run` | `src\aggregate.py` | -| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | -| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | -| consumer | `src.project_manager.save_project` | `src\project_manager.py` | -| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | -| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | -| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | -| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | -| consumer | `src.ai_client.send` | `src\ai_client.py` | -| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | -| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | | consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | -| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | -| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.models._save_config_to_disk` | `src\models.py` | -| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | -| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | -| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | -| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | -| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | -| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | -| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | -| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | -| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | -| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | -| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | -## FileItem (0 producers + 0 consumers) - -_(no producers or consumers)_ - -## FileItems (0 producers + 4 consumers) +## FileItems (6 producers + 9 consumers) | role | fqname | file | |---|---|---| -| consumer | `src.ai_client._build_file_diff_text` | `src\ai_client.py` | -| consumer | `src.ai_client.run_with_tool_loop` | `src\ai_client.py` | +| producer | `src.gui_2._render_beads_tab_list_result` | `src\gui_2.py` | +| producer | `src.gui_2._drain_normalize_errors` | `src\gui_2.py` | +| producer | `src.ai_client._list_gemini_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._list_anthropic_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._list_minimax_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._set_minimax_provider_result` | `src\ai_client.py` | +| consumer | `src.app_controller._symbol_resolution_result` | `src\app_controller.py` | +| consumer | `src.app_controller._topological_sort_tickets_result` | `src\app_controller.py` | | consumer | `src.ai_client._build_file_context_text` | `src\ai_client.py` | | consumer | `src.ai_client._reread_file_items_result` | `src\ai_client.py` | +| consumer | `src.ai_client._build_file_diff_text` | `src\ai_client.py` | +| consumer | `src.gui_2.__init__` | `src\gui_2.py` | +| consumer | `src.app_controller._serialize_tool_calls_result` | `src\app_controller.py` | +| consumer | `src.project_manager.calculate_track_progress` | `src\project_manager.py` | +| consumer | `src.ai_client.run_with_tool_loop` | `src\ai_client.py` | -## CommsLogEntry (0 producers + 0 consumers) - -_(no producers or consumers)_ - -## CommsLog (0 producers + 0 consumers) - -_(no producers or consumers)_ - -## HistoryMessage (1 producers + 2 consumers) +## CommsLogEntry (117 producers + 66 consumers) | role | fqname | file | |---|---|---| +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | +| producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.aggregate.build_file_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | +| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | + +## CommsLog (6 producers + 5 consumers) + +| role | fqname | file | +|---|---|---| +| producer | `src.gui_2._render_beads_tab_list_result` | `src\gui_2.py` | +| producer | `src.gui_2._drain_normalize_errors` | `src\gui_2.py` | +| producer | `src.ai_client._list_gemini_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._list_anthropic_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._list_minimax_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._set_minimax_provider_result` | `src\ai_client.py` | +| consumer | `src.app_controller._symbol_resolution_result` | `src\app_controller.py` | +| consumer | `src.app_controller._topological_sort_tickets_result` | `src\app_controller.py` | +| consumer | `src.gui_2.__init__` | `src\gui_2.py` | +| consumer | `src.app_controller._serialize_tool_calls_result` | `src\app_controller.py` | +| consumer | `src.project_manager.calculate_track_progress` | `src\project_manager.py` | + +## HistoryMessage (118 producers + 68 consumers) + +| role | fqname | file | +|---|---|---| +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | +| producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | | producer | `src.provider_state.get_all` | `src\provider_state.py` | +| producer | `src.aggregate.build_file_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | | consumer | `src.provider_state.append` | `src\provider_state.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.provider_state.replace_all` | `src\provider_state.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | +| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | -## History (0 producers + 0 consumers) - -_(no producers or consumers)_ - -## ToolDefinition (2 producers + 0 consumers) +## History (7 producers + 7 consumers) | role | fqname | file | |---|---|---| -| producer | `src.ai_client._build_anthropic_tools` | `src\ai_client.py` | +| producer | `src.gui_2._render_beads_tab_list_result` | `src\gui_2.py` | +| producer | `src.gui_2._drain_normalize_errors` | `src\gui_2.py` | +| producer | `src.ai_client._list_gemini_models_result` | `src\ai_client.py` | +| producer | `src.provider_state.get_all` | `src\provider_state.py` | +| producer | `src.ai_client._list_anthropic_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._list_minimax_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._set_minimax_provider_result` | `src\ai_client.py` | +| consumer | `src.provider_state.append` | `src\provider_state.py` | +| consumer | `src.app_controller._symbol_resolution_result` | `src\app_controller.py` | +| consumer | `src.app_controller._topological_sort_tickets_result` | `src\app_controller.py` | +| consumer | `src.provider_state.replace_all` | `src\provider_state.py` | +| consumer | `src.gui_2.__init__` | `src\gui_2.py` | +| consumer | `src.app_controller._serialize_tool_calls_result` | `src\app_controller.py` | +| consumer | `src.project_manager.calculate_track_progress` | `src\project_manager.py` | + +## ToolDefinition (119 producers + 66 consumers) + +| role | fqname | file | +|---|---|---| +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | | producer | `src.ai_client._build_deepseek_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | +| producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.aggregate.build_file_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.ai_client._build_anthropic_tools` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | +| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | -## ToolCall (1 producers + 1 consumers) +## ToolCall (118 producers + 67 consumers) | role | fqname | file | |---|---|---| +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | | producer | `src.openai_compatible._to_typed_tool_call` | `src\openai_compatible.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | +| producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.aggregate.build_file_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.openai_compatible._to_dict_tool_call` | `src\openai_compatible.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | +| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | ## Result (0 producers + 0 consumers) @@ -2722,35 +9205,93 @@ Functions on the per-LLM-turn path (high-frequency consumers). ### `Metadata` +| function | pattern | total field accesses | +|---|---|---| +| `src.app_controller._on_comms_entry` | `field_by_field` | 28 | +| `src.app_controller._handle_mma_state_update` | `field_by_field` | 23 | +| `src.file_cache.walk` | `field_by_field` | 6 | +| `src.project_manager.save_project` | `mixed` | 5 | +| `src.code_path_audit.synthesize_aggregate_profile` | `whole_struct` | 5 | + +### `FileItem` + | function | pattern | total field accesses | |---|---|---| | `src.app_controller._on_comms_entry` | `field_by_field` | 28 | | `src.app_controller._start_track_logic_result` | `field_by_field` | 25 | -| `src.app_controller._refresh_api_metrics` | `field_by_field` | 15 | | `src.ai_client._add_bleed_derived` | `field_by_field` | 11 | | `src.aggregate.run` | `field_by_field` | 10 | +| `src.project_manager.flat_config` | `whole_struct` | 7 | ### `FileItems` | function | pattern | total field accesses | |---|---|---| +| `src.gui_2.__init__` | `field_by_field` | 3 | | `src.ai_client.run_with_tool_loop` | `whole_struct` | 2 | -| `src.ai_client._build_file_diff_text` | `whole_struct` | 0 | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | 1 | +| `src.app_controller._symbol_resolution_result` | `whole_struct` | 0 | | `src.ai_client._build_file_context_text` | `whole_struct` | 0 | -| `src.ai_client._reread_file_items_result` | `whole_struct` | 0 | + +### `CommsLogEntry` + +| function | pattern | total field accesses | +|---|---|---| +| `src.app_controller._on_comms_entry` | `field_by_field` | 28 | +| `src.app_controller._start_track_logic_result` | `field_by_field` | 25 | +| `src.ai_client._add_bleed_derived` | `field_by_field` | 11 | +| `src.aggregate.run` | `field_by_field` | 10 | +| `src.project_manager.flat_config` | `whole_struct` | 7 | + +### `CommsLog` + +| function | pattern | total field accesses | +|---|---|---| +| `src.gui_2.__init__` | `field_by_field` | 3 | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | 1 | +| `src.app_controller._symbol_resolution_result` | `whole_struct` | 0 | +| `src.app_controller._serialize_tool_calls_result` | `whole_struct` | 0 | +| `src.project_manager.calculate_track_progress` | `whole_struct` | 0 | ### `HistoryMessage` | function | pattern | total field accesses | |---|---|---| +| `src.app_controller._on_comms_entry` | `field_by_field` | 28 | +| `src.app_controller._start_track_logic_result` | `field_by_field` | 25 | +| `src.ai_client._add_bleed_derived` | `field_by_field` | 11 | +| `src.aggregate.run` | `field_by_field` | 10 | +| `src.project_manager.flat_config` | `whole_struct` | 7 | + +### `History` + +| function | pattern | total field accesses | +|---|---|---| +| `src.gui_2.__init__` | `field_by_field` | 3 | | `src.provider_state.append` | `mixed` | 2 | | `src.provider_state.replace_all` | `mixed` | 2 | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | 1 | +| `src.app_controller._symbol_resolution_result` | `whole_struct` | 0 | + +### `ToolDefinition` + +| function | pattern | total field accesses | +|---|---|---| +| `src.app_controller._on_comms_entry` | `field_by_field` | 28 | +| `src.app_controller._start_track_logic_result` | `field_by_field` | 25 | +| `src.ai_client._add_bleed_derived` | `field_by_field` | 11 | +| `src.aggregate.run` | `field_by_field` | 10 | +| `src.project_manager.flat_config` | `whole_struct` | 7 | ### `ToolCall` | function | pattern | total field accesses | |---|---|---| -| `src.openai_compatible._to_dict_tool_call` | `whole_struct` | 1 | +| `src.app_controller._on_comms_entry` | `field_by_field` | 28 | +| `src.app_controller._start_track_logic_result` | `field_by_field` | 25 | +| `src.ai_client._add_bleed_derived` | `field_by_field` | 11 | +| `src.aggregate.run` | `field_by_field` | 10 | +| `src.project_manager.flat_config` | `whole_struct` | 7 | --- @@ -2763,20 +9304,81 @@ Cross-aggregate analysis of which fields are accessed how often across the codeb | aggregate | field | total accesses | |---|---|---| +| `CommsLog` | `_report_worker_error` | 1 | +| `CommsLog` | `_module_name` | 1 | +| `CommsLog` | `_attr_name` | 1 | +| `CommsLog` | `_cached` | 1 | +| `CommsLogEntry` | `get` | 33 | +| `CommsLogEntry` | `content` | 16 | +| `CommsLogEntry` | `marker` | 16 | +| `CommsLogEntry` | `pop` | 6 | +| `CommsLogEntry` | `files` | 5 | +| `CommsLogEntry` | `session_usage` | 5 | +| `CommsLogEntry` | `_pending_history_adds_lock` | 4 | +| `CommsLogEntry` | `_pending_history_adds` | 4 | +| `CommsLogEntry` | `ai_status` | 4 | +| `CommsLogEntry` | `append` | 3 | +| `FileItem` | `get` | 33 | +| `FileItem` | `content` | 16 | +| `FileItem` | `marker` | 16 | +| `FileItem` | `pop` | 6 | +| `FileItem` | `files` | 5 | +| `FileItem` | `session_usage` | 5 | +| `FileItem` | `_pending_history_adds_lock` | 4 | +| `FileItem` | `_pending_history_adds` | 4 | +| `FileItem` | `ai_status` | 4 | +| `FileItem` | `append` | 3 | | `FileItems` | `append` | 2 | -| `HistoryMessage` | `lock` | 2 | -| `HistoryMessage` | `messages` | 2 | -| `Metadata` | `get` | 39 | -| `Metadata` | `content` | 21 | -| `Metadata` | `marker` | 21 | -| `Metadata` | `pop` | 10 | -| `Metadata` | `session_usage` | 7 | -| `Metadata` | `files` | 5 | -| `Metadata` | `ai_status` | 5 | +| `FileItems` | `_report_worker_error` | 1 | +| `FileItems` | `_module_name` | 1 | +| `FileItems` | `_attr_name` | 1 | +| `FileItems` | `_cached` | 1 | +| `History` | `lock` | 2 | +| `History` | `messages` | 2 | +| `History` | `_report_worker_error` | 1 | +| `History` | `_module_name` | 1 | +| `History` | `_attr_name` | 1 | +| `History` | `_cached` | 1 | +| `HistoryMessage` | `get` | 33 | +| `HistoryMessage` | `content` | 15 | +| `HistoryMessage` | `marker` | 15 | +| `HistoryMessage` | `pop` | 6 | +| `HistoryMessage` | `files` | 5 | +| `HistoryMessage` | `session_usage` | 5 | +| `HistoryMessage` | `_pending_history_adds_lock` | 4 | +| `HistoryMessage` | `_pending_history_adds` | 4 | +| `HistoryMessage` | `ai_status` | 4 | +| `HistoryMessage` | `append` | 3 | +| `Metadata` | `get` | 13 | +| `Metadata` | `active_tier` | 6 | +| `Metadata` | `mma_tier_usage` | 6 | +| `Metadata` | `active_track` | 5 | +| `Metadata` | `session_usage` | 5 | +| `Metadata` | `files` | 4 | +| `Metadata` | `_size` | 4 | | `Metadata` | `_pending_history_adds_lock` | 4 | | `Metadata` | `_pending_history_adds` | 4 | -| `Metadata` | `append` | 3 | -| `ToolCall` | `to_dict` | 1 | +| `Metadata` | `parent` | 4 | +| `ToolCall` | `get` | 33 | +| `ToolCall` | `content` | 16 | +| `ToolCall` | `marker` | 16 | +| `ToolCall` | `pop` | 6 | +| `ToolCall` | `files` | 5 | +| `ToolCall` | `session_usage` | 5 | +| `ToolCall` | `_pending_history_adds_lock` | 4 | +| `ToolCall` | `_pending_history_adds` | 4 | +| `ToolCall` | `ai_status` | 4 | +| `ToolCall` | `append` | 3 | +| `ToolDefinition` | `get` | 33 | +| `ToolDefinition` | `content` | 16 | +| `ToolDefinition` | `marker` | 16 | +| `ToolDefinition` | `pop` | 6 | +| `ToolDefinition` | `files` | 5 | +| `ToolDefinition` | `session_usage` | 5 | +| `ToolDefinition` | `_pending_history_adds_lock` | 4 | +| `ToolDefinition` | `_pending_history_adds` | 4 | +| `ToolDefinition` | `ai_status` | 4 | +| `ToolDefinition` | `append` | 3 | --- @@ -2789,15 +9391,15 @@ Cross-aggregate analysis of which fields are accessed how often across the codeb | Aggregate | Producers | Consumers | Struct fields | Current cost (us/turn) | Direction | Actionable savings (us/turn) | |---|---|---|---|---|---|---| -| `Metadata` | 117 | 66 | 10 | 720 | `hold` | 0 | -| `FileItem` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | -| `FileItems` | 0 | 4 | 5 | 470 | `hold` | 70 | -| `CommsLogEntry` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | -| `CommsLog` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | -| `HistoryMessage` | 1 | 2 | 5 | 470 | `insufficient_data` | 0 | -| `History` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | -| `ToolDefinition` | 2 | 0 | 5 | 470 | `insufficient_data` | 0 | -| `ToolCall` | 1 | 1 | 5 | 470 | `hold` | 70 | +| `Metadata` | 483 | 752 | 6 | 520 | `hold` | 0 | +| `FileItem` | 117 | 66 | 5 | 470 | `hold` | 70 | +| `FileItems` | 6 | 9 | 5 | 470 | `hold` | 70 | +| `CommsLogEntry` | 117 | 66 | 5 | 470 | `hold` | 70 | +| `CommsLog` | 6 | 5 | 5 | 470 | `hold` | 70 | +| `HistoryMessage` | 118 | 68 | 5 | 470 | `hold` | 70 | +| `History` | 7 | 7 | 5 | 470 | `hold` | 70 | +| `ToolDefinition` | 119 | 66 | 5 | 470 | `hold` | 70 | +| `ToolCall` | 118 | 67 | 5 | 470 | `hold` | 70 | | `Result` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | ## Aggregates flagged for refactoring @@ -2808,12 +9410,6 @@ _(no aggregates currently flagged for refactoring; most have 'hold' status)_ | Aggregate | Reason | |---|---| -| `FileItem` | FileItem: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | -| `CommsLogEntry` | CommsLogEntry: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | -| `CommsLog` | CommsLog: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | -| `HistoryMessage` | HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | -| `History` | History: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | -| `ToolDefinition` | ToolDefinition: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | | `Result` | Result: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | @@ -2829,7 +9425,7 @@ _(no aggregates currently flagged for refactoring; most have 'hold' status)_ | FileItem | 0 | 0 | 0 | 0 | 0 | 0 | | FileItems | 0 | 0 | 0 | 0 | 0 | 0 | | CommsLogEntry | 0 | 0 | 0 | 0 | 0 | 0 | -| CommsLog | 0 | 0 | 0 | 0 | 0 | 0 | +| CommsLog | 0 | 0 | 1 | 0 | 0 | 1 | | HistoryMessage | 0 | 0 | 0 | 0 | 0 | 0 | | History | 0 | 0 | 0 | 0 | 0 | 0 | | ToolDefinition | 0 | 0 | 1 | 0 | 0 | 1 | @@ -2849,33 +9445,69 @@ Fields that appear in producer return shapes but are never read by any consumer. ### `Metadata` -Fields read by at least one consumer: 55 +Fields read by at least one consumer: 53 + + +### `FileItem` + +Fields read by at least one consumer: 43 ### `FileItems` -Fields read by at least one consumer: 1 +Fields read by at least one consumer: 5 | field | read count | |---|---| +| `_attr_name` | 1 | +| `_cached` | 1 | +| `_module_name` | 1 | +| `_report_worker_error` | 1 | | `append` | 2 | +### `CommsLogEntry` + +Fields read by at least one consumer: 43 + + +### `CommsLog` + +Fields read by at least one consumer: 4 + +| field | read count | +|---|---| +| `_attr_name` | 1 | +| `_cached` | 1 | +| `_module_name` | 1 | +| `_report_worker_error` | 1 | + ### `HistoryMessage` -Fields read by at least one consumer: 2 +Fields read by at least one consumer: 45 + + +### `History` + +Fields read by at least one consumer: 6 | field | read count | |---|---| +| `_attr_name` | 1 | +| `_cached` | 1 | +| `_module_name` | 1 | +| `_report_worker_error` | 1 | | `lock` | 2 | | `messages` | 2 | +### `ToolDefinition` + +Fields read by at least one consumer: 43 + + ### `ToolCall` -Fields read by at least one consumer: 1 +Fields read by at least one consumer: 44 -| field | read count | -|---|---| -| `to_dict` | 1 | --- @@ -2905,10 +9537,10 @@ Generated for 13 aggregates on 2026-06-22 - **Real aggregates (in scope):** 10 - **Candidate aggregates (placeholders):** 3 -- **Total producers:** 121 -- **Total consumers:** 73 -- **Total current cost (us/turn):** 4950 -- **Total actionable savings (us/turn):** 140 +- **Total producers:** 1091 +- **Total consumers:** 1106 +- **Total current cost (us/turn):** 4750 +- **Total actionable savings (us/turn):** 560 ## 4-mem-dim rollup @@ -2921,16 +9553,16 @@ Generated for 13 aggregates on 2026-06-22 | Aggregate | Kind | Memory dim | Access pattern | Producers | Consumers | |---|---|---|---|---|---| -| `CommsLog` | `typealias` | `discussion` | `mixed` | 0 | 0 | -| `CommsLogEntry` | `typealias` | `discussion` | `mixed` | 0 | 0 | -| `FileItem` | `typealias` | `curation` | `mixed` | 0 | 0 | -| `FileItems` | `typealias` | `curation` | `whole_struct` | 0 | 4 | -| `History` | `typealias` | `discussion` | `mixed` | 0 | 0 | -| `HistoryMessage` | `typealias` | `discussion` | `mixed` | 1 | 2 | -| `Metadata` | `typealias` | `discussion` | `whole_struct` | 117 | 66 | +| `CommsLog` | `typealias` | `discussion` | `whole_struct` | 6 | 5 | +| `CommsLogEntry` | `typealias` | `discussion` | `whole_struct` | 117 | 66 | +| `FileItem` | `typealias` | `curation` | `whole_struct` | 117 | 66 | +| `FileItems` | `typealias` | `curation` | `whole_struct` | 6 | 9 | +| `History` | `typealias` | `discussion` | `whole_struct` | 7 | 7 | +| `HistoryMessage` | `typealias` | `discussion` | `whole_struct` | 118 | 68 | +| `Metadata` | `typealias` | `discussion` | `whole_struct` | 483 | 752 | | `Result` | `typealias` | `control` | `mixed` | 0 | 0 | -| `ToolCall` | `typealias` | `control` | `whole_struct` | 1 | 1 | -| `ToolDefinition` | `typealias` | `control` | `mixed` | 2 | 0 | +| `ToolCall` | `typealias` | `control` | `whole_struct` | 118 | 67 | +| `ToolDefinition` | `typealias` | `control` | `whole_struct` | 119 | 66 | | `ChatMessage` | `candidate_dataclass` | `discussion` | `mixed` | 0 | 0 | | `ProviderHistory` | `candidate_dataclass` | `unknown` | `mixed` | 0 | 0 | | `ToolSpec` | `candidate_dataclass` | `unknown` | `mixed` | 0 | 0 | @@ -2939,44 +9571,44 @@ Generated for 13 aggregates on 2026-06-22 ### `CommsLog` -- **Result coverage:** 0 producers, 0 consumers -- **Type alias coverage:** 0 sites -- **Cross-audit findings (total sites):** 0 +- **Result coverage:** 6 producers, 5 consumers +- **Type alias coverage:** 4 sites; 0 typed (0%); 4 untyped (100%) +- **Cross-audit findings (total sites):** 1 ### `CommsLogEntry` -- **Result coverage:** 0 producers, 0 consumers -- **Type alias coverage:** 0 sites +- **Result coverage:** 96 producers, 46 consumers +- **Type alias coverage:** 135 sites; 0 typed (0%); 135 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `FileItem` -- **Result coverage:** 0 producers, 0 consumers -- **Type alias coverage:** 0 sites +- **Result coverage:** 96 producers, 46 consumers +- **Type alias coverage:** 135 sites; 0 typed (0%); 135 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `FileItems` -- **Result coverage:** 0 producers, 4 consumers -- **Type alias coverage:** 2 sites; 0 typed (0%); 2 untyped (100%) +- **Result coverage:** 6 producers, 9 consumers +- **Type alias coverage:** 6 sites; 0 typed (0%); 6 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `History` -- **Result coverage:** 0 producers, 0 consumers -- **Type alias coverage:** 0 sites +- **Result coverage:** 7 producers, 7 consumers +- **Type alias coverage:** 8 sites; 0 typed (0%); 8 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `HistoryMessage` -- **Result coverage:** 1 producers, 2 consumers -- **Type alias coverage:** 4 sites; 0 typed (0%); 4 untyped (100%) +- **Result coverage:** 97 producers, 48 consumers +- **Type alias coverage:** 137 sites; 0 typed (0%); 137 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `Metadata` -- **Result coverage:** 96 producers, 46 consumers -- **Type alias coverage:** 173 sites; 0 typed (0%); 173 untyped (100%) +- **Result coverage:** 457 producers, 697 consumers +- **Type alias coverage:** 123 sites; 0 typed (0%); 123 untyped (100%) - **Cross-audit findings (total sites):** 1 ### `Result` @@ -2987,14 +9619,14 @@ Generated for 13 aggregates on 2026-06-22 ### `ToolCall` -- **Result coverage:** 1 producers, 1 consumers -- **Type alias coverage:** 1 sites; 0 typed (0%); 1 untyped (100%) +- **Result coverage:** 97 producers, 47 consumers +- **Type alias coverage:** 136 sites; 0 typed (0%); 136 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `ToolDefinition` -- **Result coverage:** 2 producers, 0 consumers -- **Type alias coverage:** 0 sites +- **Result coverage:** 98 producers, 46 consumers +- **Type alias coverage:** 135 sites; 0 typed (0%); 135 untyped (100%) - **Cross-audit findings (total sites):** 1 diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.dsl index c95cdc7f..832ac3a1 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.dsl +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.dsl @@ -7,31 +7,53 @@ \ === memory_dim === "discussion" mem-dim -\ === producers (0 items) === +\ === producers (6 items) === + "src.gui_2._render_beads_tab_list_result" "src\gui_2.py" 8314 "producer" fn-ref + "src.gui_2._drain_normalize_errors" "src\gui_2.py" 7417 "producer" fn-ref + "src.ai_client._list_gemini_models_result" "src\ai_client.py" 1626 "producer" fn-ref + "src.ai_client._list_anthropic_models_result" "src\ai_client.py" 1317 "producer" fn-ref + "src.ai_client._list_minimax_models_result" "src\ai_client.py" 2436 "producer" fn-ref + "src.ai_client._set_minimax_provider_result" "src\ai_client.py" 398 "producer" fn-ref -\ === consumers (0 items) === +\ === consumers (5 items) === + "src.app_controller._symbol_resolution_result" "src\app_controller.py" 3506 "consumer" fn-ref + "src.app_controller._topological_sort_tickets_result" "src\app_controller.py" 4708 "consumer" fn-ref + "src.gui_2.__init__" "src\gui_2.py" 7550 "consumer" fn-ref + "src.app_controller._serialize_tool_calls_result" "src\app_controller.py" 2217 "consumer" fn-ref + "src.project_manager.calculate_track_progress" "src\project_manager.py" 420 "consumer" fn-ref \ === access_pattern === - "mixed" access-pattern + "whole_struct" access-pattern -\ === access_pattern_evidence (0 items) === +\ === access_pattern_evidence (5 items) === + "src.app_controller._symbol_resolution_result" "whole_struct" 0 "low" ap-evidence + "src.app_controller._topological_sort_tickets_result" "whole_struct" 1 "high" ap-evidence + "src.gui_2.__init__" "field_by_field" 3 "high" ap-evidence + "src.app_controller._serialize_tool_calls_result" "whole_struct" 0 "low" ap-evidence + "src.project_manager.calculate_track_progress" "whole_struct" 0 "low" ap-evidence \ === frequency === "per_turn" frequency -\ === frequency_evidence (0 items) === +\ === frequency_evidence (5 items) === + "src.gui_2._render_beads_tab_list_result" "per_turn" "static_analysis" "producer from src\gui_2.py" freq-evidence + "src.gui_2._drain_normalize_errors" "per_turn" "static_analysis" "producer from src\gui_2.py" freq-evidence + "src.ai_client._list_gemini_models_result" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.ai_client._list_anthropic_models_result" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.ai_client._list_minimax_models_result" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence \ === result_coverage === - 0 0 0 0 result-coverage + 6 6 5 0 result-coverage \ === type_alias_coverage === - 0 0 0 type-alias-coverage + 4 0 4 type-alias-coverage \ === cross_audit_findings === + "audit_optional_in_3_files" 76 "src\ai_client.py" 159 "76 sites" cross-audit-finding 5 cross-audit-findings \ === decomposition_cost === - 470 0 0 "insufficient_data" "CommsLog: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern." nil 5 true decomp-cost + 470 0 70 "hold" "CommsLog: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 5 true decomp-cost \ === optimization_candidates (0 items) === diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.md b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.md index f8dacbfb..a7689933 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.md +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.md @@ -6,92 +6,141 @@ ## Pipeline summary -- Producers: 0 -- Consumers: 0 -- Distinct producer fqnames: 0 -- Distinct consumer fqnames: 0 -- Access pattern (aggregate): mixed +- Producers: 6 +- Consumers: 5 +- Distinct producer fqnames: 6 +- Distinct consumer fqnames: 5 +- Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data +- Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (0) +## Producers (6) -_(none)_ +### `src\ai_client.py` (4 producers) -## Consumers (0) +- `src.ai_client._list_gemini_models_result` (line 1626) +- `src.ai_client._list_anthropic_models_result` (line 1317) +- `src.ai_client._list_minimax_models_result` (line 2436) +- `src.ai_client._set_minimax_provider_result` (line 398) -_(none)_ +### `src\gui_2.py` (2 producers) + +- `src.gui_2._render_beads_tab_list_result` (line 8314) +- `src.gui_2._drain_normalize_errors` (line 7417) + +## Consumers (5) + +### `src\app_controller.py` (3 consumers) + +- `src.app_controller._symbol_resolution_result` (line 3506) +- `src.app_controller._topological_sort_tickets_result` (line 4708) +- `src.app_controller._serialize_tool_calls_result` (line 2217) + +### `src\gui_2.py` (1 consumer) + +- `src.gui_2.__init__` (line 7550) + +### `src\project_manager.py` (1 consumer) + +- `src.project_manager.calculate_track_progress` (line 420) ## Field access matrix -_(no field accesses detected)_ +| consumer | _attr_name | _cached | _module_name | _report_worker_error | +|---|---|---|---|---| +| `_symbol_resolution_result` | . | . | . | . | +| `_topological_sort_tickets_result` | . | . | . | 1 | +| `__init__` | 1 | 1 | 1 | . | +| `_serialize_tool_calls_result` | . | . | . | . | +| `calculate_track_progress` | . | . | . | . | ## Access pattern -**Dominant pattern:** mixed -**Evidence count:** 0 +**Dominant pattern:** whole_struct +**Evidence count:** 5 + +**Per-function pattern distribution:** + +- `whole_struct`: 4 functions (80%) +- `field_by_field`: 1 functions (20%) ## SSDL Sketch for `CommsLog` ``` [Q:CommsLog entry-point] -> [Q:PCG lookup] + -> [1: _symbol_resolution_result] [B:check] (branches=4) + -> [2: _topological_sort_tickets_result] [B:check] (branches=2) + -> [3: __init__] [B:check] (branches=0) + -> [4: _serialize_tool_calls_result] [B:check] (branches=2) + -> [5: calculate_track_progress] [B:check] (branches=1) -> [T:done] ``` -**Effective codepaths:** 0 (sum of 2^branches across 0 consumers) -**Total branch points:** 0 +**Effective codepaths:** 27 (sum of 2^branches across 5 consumers) +**Total branch points:** 9 **Nil-check functions:** 0 **Defusing opportunities:** -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `commslog_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. - - Effective codepaths: 0 -> 1 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `commslog_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 4 field-check branches to 1 cache lookup. + - Effective codepaths: 27 -> 4 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 0 +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions ## Result coverage -**Summary:** 0 producers, 0 consumers +**Summary:** 6 producers, 5 consumers | metric | value | |---|---| -| total producers | 0 | -| result producers | 0 | -| total consumers | 0 | +| total producers | 6 | +| result producers | 6 | +| total consumers | 5 | | result consumers | 0 | ## Type alias coverage -**Summary:** 0 sites +**Summary:** 4 sites; 0 typed (0%); 4 untyped (100%) | metric | value | |---|---| -| total field-access sites | 0 | +| total field-access sites | 4 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 0 | +| untyped sites (wildcard) | 4 | ## Cross-audit findings -_(no cross-audit findings mapped to this aggregate)_ +| bucket | audit script | site count | example file | example line | note | +|---|---|---|---|---|---| +| optional_in_baseline | `audit_optional_in_3_files` | 76 | `src\ai_client.py` | 159 | 76 sites | ## Decomposition cost **Current cost estimate:** 470 us/turn **Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** CommsLog: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** CommsLog: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. **Struct field count (estimated):** 5 **Struct frozen:** True ## Struct shape (inferred from producer returns) -_(no producers; cannot infer shape)_ +| field | access count | access pattern | +|---|---|---| +| `_report_worker_error` | 1 | used | +| `_module_name` | 1 | used | +| `_attr_name` | 1 | used | +| `_cached` | 1 | used | ## Optimization candidates @@ -99,6 +148,26 @@ _(no optimization candidates generated)_ ## Verdict -CommsLog: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +CommsLog: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix + +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.app_controller._symbol_resolution_result` | `whole_struct` | | low | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | `_report_worker_error`=1 | high | +| `src.gui_2.__init__` | `field_by_field` | `_module_name`=1, `_attr_name`=1, `_cached`=1 | high | +| `src.app_controller._serialize_tool_calls_result` | `whole_struct` | | low | +| `src.project_manager.calculate_track_progress` | `whole_struct` | | low | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.gui_2._render_beads_tab_list_result` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.gui_2._drain_normalize_errors` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.ai_client._list_gemini_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.ai_client._list_anthropic_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.ai_client._list_minimax_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.tree b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.tree index 3cec1d7a..f1391674 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.tree +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLog.tree @@ -1,12 +1,23 @@ Metadata: CommsLog |- kind: typealias |- memory_dim: discussion -|- producers: [0] -|- consumers: [0] -|- access_pattern: mixed +|- producers: [6] +| |- src.gui_2._render_beads_tab_list_result (producer) +| |- src.gui_2._drain_normalize_errors (producer) +| |- src.ai_client._list_gemini_models_result (producer) +| |- src.ai_client._list_anthropic_models_result (producer) +| |- src.ai_client._list_minimax_models_result (producer) +| |- src.ai_client._set_minimax_provider_result (producer) +|- consumers: [5] +| |- src.app_controller._symbol_resolution_result (consumer) +| |- src.app_controller._topological_sort_tickets_result (consumer) +| |- src.gui_2.__init__ (consumer) +| |- src.app_controller._serialize_tool_calls_result (consumer) +| |- src.project_manager.calculate_track_progress (consumer) +|- access_pattern: whole_struct |- frequency: per_turn -|- result_coverage: 0 producers, 0 consumers -|- type_alias_coverage: 0 sites -|- cross_audit_findings: 0 findings -|- decomposition_cost: insufficient_data (470 us) +|- result_coverage: 6 producers, 5 consumers +|- type_alias_coverage: 4 sites; 0 typed (0%); 4 untyped (100%) +|- cross_audit_findings: 1 findings +|- decomposition_cost: hold (470 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.dsl index 23e7ac0a..6e130697 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.dsl +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.dsl @@ -7,31 +7,269 @@ \ === memory_dim === "discussion" mem-dim -\ === producers (0 items) === +\ === producers (117 items) === + "src.ai_client._extract_dashscope_tool_calls" "src\ai_client.py" 2754 "producer" fn-ref + "src.api_hook_client.get_warmup_wait" "src\api_hook_client.py" 332 "producer" fn-ref + "src.app_controller.wait" "src\app_controller.py" 5205 "producer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "producer" fn-ref + "src.app_controller._pending_mma_spawn" "src\app_controller.py" 2772 "producer" fn-ref + "src.api_hook_client.wait_for_event" "src\api_hook_client.py" 136 "producer" fn-ref + "src.api_hook_client.clear_events" "src\api_hook_client.py" 129 "producer" fn-ref + "src.project_manager.get_all_tracks" "src\project_manager.py" 342 "producer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "producer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "producer" fn-ref + "src.app_controller._api_get_diagnostics" "src\app_controller.py" 202 "producer" fn-ref + "src.app_controller.get_gui_state" "src\app_controller.py" 2829 "producer" fn-ref + "src.app_controller.load_config" "src\app_controller.py" 5142 "producer" fn-ref + "src.api_hook_client.get_warmup_status" "src\api_hook_client.py" 325 "producer" fn-ref + "src.api_hook_client.get_project" "src\api_hook_client.py" 367 "producer" fn-ref + "src.api_hook_client.get_mma_workers" "src\api_hook_client.py" 546 "producer" fn-ref + "src.models.to_dict" "src\models.py" 646 "producer" fn-ref + "src.api_hook_client.reject_patch" "src\api_hook_client.py" 288 "producer" fn-ref + "src.models.to_dict" "src\models.py" 406 "producer" fn-ref + "src.app_controller._api_get_session" "src\app_controller.py" 374 "producer" fn-ref + "src.ai_client._parse_tool_args_result" "src\ai_client.py" 741 "producer" fn-ref + "src.app_controller._api_pending_actions" "src\app_controller.py" 335 "producer" fn-ref + "src.models.to_dict" "src\models.py" 855 "producer" fn-ref + "src.project_manager.load_history" "src\project_manager.py" 209 "producer" fn-ref + "src.app_controller.get_context" "src\app_controller.py" 2892 "producer" fn-ref + "src.ai_client._build_chunked_context_blocks" "src\ai_client.py" 1281 "producer" fn-ref + "src.ai_client._get_anthropic_tools" "src\ai_client.py" 664 "producer" fn-ref + "src.api_hook_client.get_gui_state" "src\api_hook_client.py" 165 "producer" fn-ref + "src.models.to_dict" "src\models.py" 938 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1059 "producer" fn-ref + "src.ai_client._get_deepseek_tools" "src\ai_client.py" 1194 "producer" fn-ref + "src.models.parse_history_entries" "src\models.py" 214 "producer" fn-ref + "src.api_hook_client.get_events" "src\api_hook_client.py" 124 "producer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "producer" fn-ref + "src.project_manager.str_to_entry" "src\project_manager.py" 75 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 473 "producer" fn-ref + "src.models.to_dict" "src\models.py" 794 "producer" fn-ref + "src.api_hook_client.get_session" "src\api_hook_client.py" 502 "producer" fn-ref + "src.app_controller.token_stats" "src\app_controller.py" 2898 "producer" fn-ref + "src.api_hook_client.get_io_pool_status" "src\api_hook_client.py" 420 "producer" fn-ref + "src.api_hook_client.trigger_patch" "src\api_hook_client.py" 274 "producer" fn-ref + "src.api_hook_client.get_gui_health" "src\api_hook_client.py" 434 "producer" fn-ref + "src.ai_client.get_gemini_cache_stats" "src\ai_client.py" 1604 "producer" fn-ref + "src.app_controller._api_get_api_project" "src\app_controller.py" 188 "producer" fn-ref + "src.api_hook_client.get_status" "src\api_hook_client.py" 105 "producer" fn-ref + "src.app_controller._api_get_context" "src\app_controller.py" 398 "producer" fn-ref + "src.app_controller._api_token_stats" "src\app_controller.py" 417 "producer" fn-ref + "src.api_hook_client.get_context_state" "src\api_hook_client.py" 491 "producer" fn-ref + "src.api_hook_client.set_value" "src\api_hook_client.py" 212 "producer" fn-ref + "src.app_controller.get_mma_status" "src\app_controller.py" 2835 "producer" fn-ref + "src.api_hook_client.post_gui" "src\api_hook_client.py" 149 "producer" fn-ref + "src.api_hook_client.get_gui_diagnostics" "src\api_hook_client.py" 311 "producer" fn-ref + "src.app_controller._api_get_performance" "src\app_controller.py" 195 "producer" fn-ref + "src.app_controller._api_get_api_session" "src\app_controller.py" 170 "producer" fn-ref + "src.api_hook_client.get_mma_status" "src\api_hook_client.py" 539 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1000 "producer" fn-ref + "src.models.to_dict" "src\models.py" 672 "producer" fn-ref + "src.models.to_dict" "src\models.py" 355 "producer" fn-ref + "src.aggregate.build_file_items" "src\aggregate.py" 158 "producer" fn-ref + "src.api_hook_client.get_startup_timeline" "src\api_hook_client.py" 353 "producer" fn-ref + "src.api_hook_client.get_node_status" "src\api_hook_client.py" 532 "producer" fn-ref + "src.api_hook_client.get_performance" "src\api_hook_client.py" 318 "producer" fn-ref + "src.ai_client._load_credentials" "src\ai_client.py" 282 "producer" fn-ref + "src.app_controller._api_get_gui_state" "src\app_controller.py" 123 "producer" fn-ref + "src.project_manager.default_project" "src\project_manager.py" 123 "producer" fn-ref + "src.api_hook_client.post_session" "src\api_hook_client.py" 117 "producer" fn-ref + "src.app_controller.get_performance" "src\app_controller.py" 2856 "producer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "producer" fn-ref + "src.models.to_dict" "src\models.py" 486 "producer" fn-ref + "src.models.to_dict" "src\models.py" 913 "producer" fn-ref + "src.models.to_dict" "src\models.py" 596 "producer" fn-ref + "src.api_hook_client.push_event" "src\api_hook_client.py" 156 "producer" fn-ref + "src.api_hook_client.get_warmup_canaries" "src\api_hook_client.py" 342 "producer" fn-ref + "src.api_hook_client.drag" "src\api_hook_client.py" 230 "producer" fn-ref + "src.app_controller.pending_actions" "src\app_controller.py" 2874 "producer" fn-ref + "src.ai_client.get_token_stats" "src\ai_client.py" 3185 "producer" fn-ref + "src.models.to_dict" "src\models.py" 886 "producer" fn-ref + "src.app_controller.status" "src\app_controller.py" 2865 "producer" fn-ref + "src.models.to_dict" "src\models.py" 558 "producer" fn-ref + "src.api_hook_client.apply_patch" "src\api_hook_client.py" 281 "producer" fn-ref + "src.models._load_config_from_disk" "src\models.py" 186 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 470 "producer" fn-ref + "src.app_controller._api_get_mma_status" "src\app_controller.py" 144 "producer" fn-ref + "src.api_hook_client.get_patch_status" "src\api_hook_client.py" 295 "producer" fn-ref + "src.app_controller.generate" "src\app_controller.py" 2868 "producer" fn-ref + "src.models.to_dict" "src\models.py" 441 "producer" fn-ref + "src.app_controller.get_api_project" "src\app_controller.py" 2853 "producer" fn-ref + "src.app_controller._api_status" "src\app_controller.py" 209 "producer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1024 "producer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "producer" fn-ref + "src.api_hook_client.wait_for_project_switch" "src\api_hook_client.py" 389 "producer" fn-ref + "src.models.to_dict" "src\models.py" 971 "producer" fn-ref + "src.api_hook_client.click" "src\api_hook_client.py" 223 "producer" fn-ref + "src.ai_client.get_comms_log" "src\ai_client.py" 273 "producer" fn-ref + "src.app_controller._api_generate" "src\app_controller.py" 221 "producer" fn-ref + "src.api_hook_client.select_list_item" "src\api_hook_client.py" 256 "producer" fn-ref + "src.models.to_dict" "src\models.py" 288 "producer" fn-ref + "src.api_hook_client.get_project_switch_status" "src\api_hook_client.py" 374 "producer" fn-ref + "src.models.to_dict" "src\models.py" 737 "producer" fn-ref + "src.project_manager.load_project" "src\project_manager.py" 186 "producer" fn-ref + "src.app_controller.get_session" "src\app_controller.py" 2883 "producer" fn-ref + "src.api_hook_client.get_system_telemetry" "src\api_hook_client.py" 524 "producer" fn-ref + "src.models.to_dict" "src\models.py" 618 "producer" fn-ref + "src.api_hook_client._make_request" "src\api_hook_client.py" 65 "producer" fn-ref + "src.app_controller.get_diagnostics" "src\app_controller.py" 2862 "producer" fn-ref + "src.app_controller.get_session_insights" "src\app_controller.py" 3049 "producer" fn-ref + "src.ai_client._content_block_to_dict" "src\ai_client.py" 1200 "producer" fn-ref + "src.api_hook_client.select_tab" "src\api_hook_client.py" 263 "producer" fn-ref + "src.app_controller._pending_mma_approval" "src\app_controller.py" 2776 "producer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "producer" fn-ref + "src.models.to_dict" "src\models.py" 701 "producer" fn-ref + "src.api_hook_client.right_click" "src\api_hook_client.py" 237 "producer" fn-ref + "src.app_controller.get_api_session" "src\app_controller.py" 2847 "producer" fn-ref + "src.project_manager.default_discussion" "src\project_manager.py" 117 "producer" fn-ref + "src.ai_client._send_cli_round_result" "src\ai_client.py" 1746 "producer" fn-ref + "src.api_hook_client.get_financial_metrics" "src\api_hook_client.py" 520 "producer" fn-ref -\ === consumers (0 items) === +\ === consumers (66 items) === + "src.ai_client._invalidate_token_estimate" "src\ai_client.py" 1240 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 920 "consumer" fn-ref + "src.aggregate.build_markdown_from_items" "src\aggregate.py" 348 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 603 "consumer" fn-ref + "src.ai_client._create_gemini_cache_result" "src\ai_client.py" 1706 "consumer" fn-ref + "src.ai_client._send_grok" "src\ai_client.py" 2530 "consumer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 506 "consumer" fn-ref + "src.ai_client._send_gemini_cli" "src\ai_client.py" 2019 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 814 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 893 "consumer" fn-ref + "src.ai_client._send_gemini" "src\ai_client.py" 1802 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 378 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1038 "consumer" fn-ref + "src.ai_client._send_anthropic" "src\ai_client.py" 1405 "consumer" fn-ref + "src.project_manager.save_project" "src\project_manager.py" 229 "consumer" fn-ref + "src.ai_client._trim_anthropic_history" "src\ai_client.py" 1353 "consumer" fn-ref + "src.ai_client._send_llama" "src\ai_client.py" 2858 "consumer" fn-ref + "src.aggregate.build_tier3_context" "src\aggregate.py" 382 "consumer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "consumer" fn-ref + "src.project_manager.format_discussion" "src\project_manager.py" 69 "consumer" fn-ref + "src.project_manager.entry_to_str" "src\project_manager.py" 49 "consumer" fn-ref + "src.ai_client._repair_minimax_history" "src\ai_client.py" 2462 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1007 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 747 "consumer" fn-ref + "src.ai_client._strip_stale_file_refreshes" "src\ai_client.py" 1253 "consumer" fn-ref + "src.ai_client._send_deepseek" "src\ai_client.py" 2165 "consumer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 683 "consumer" fn-ref + "src.aggregate.build_markdown_no_history" "src\aggregate.py" 366 "consumer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "consumer" fn-ref + "src.ai_client._send_llama_native" "src\ai_client.py" 2958 "consumer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "consumer" fn-ref + "src.ai_client._send_qwen" "src\ai_client.py" 2773 "consumer" fn-ref + "src.app_controller._on_comms_entry" "src\app_controller.py" 4282 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 712 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 866 "consumer" fn-ref + "src.ai_client._repair_deepseek_history" "src\ai_client.py" 2138 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 454 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 575 "consumer" fn-ref + "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 945 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 630 "consumer" fn-ref + "src.ai_client._repair_anthropic_history" "src\ai_client.py" 1381 "consumer" fn-ref + "src.ai_client._strip_cache_controls" "src\ai_client.py" 1291 "consumer" fn-ref + "src.aggregate.run" "src\aggregate.py" 479 "consumer" fn-ref + "src.models._save_config_to_disk" "src\models.py" 199 "consumer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "consumer" fn-ref + "src.app_controller._start_track_logic_result" "src\app_controller.py" 4728 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 949 "consumer" fn-ref + "src.ai_client._estimate_prompt_tokens" "src\ai_client.py" 1243 "consumer" fn-ref + "src.ai_client._append_comms" "src\ai_client.py" 257 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 982 "consumer" fn-ref + "src.ai_client._estimate_message_tokens" "src\ai_client.py" 1218 "consumer" fn-ref + "src.ai_client._add_history_cache_breakpoint" "src\ai_client.py" 1299 "consumer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 295 "consumer" fn-ref + "src.aggregate._build_files_section_from_items" "src\aggregate.py" 300 "consumer" fn-ref + "src.ai_client._trim_minimax_history" "src\ai_client.py" 2482 "consumer" fn-ref + "src.app_controller._refresh_api_metrics" "src\app_controller.py" 3074 "consumer" fn-ref + "src.app_controller._start_track_logic" "src\app_controller.py" 4721 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 416 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 656 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1072 "consumer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "consumer" fn-ref + "src.ai_client._send_minimax" "src\ai_client.py" 2616 "consumer" fn-ref + "src.ai_client.send" "src\ai_client.py" 3208 "consumer" fn-ref \ === access_pattern === - "mixed" access-pattern + "whole_struct" access-pattern -\ === access_pattern_evidence (0 items) === +\ === access_pattern_evidence (50 items) === + "src.ai_client._invalidate_token_estimate" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.aggregate.build_markdown_from_items" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._create_gemini_cache_result" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_grok" "whole_struct" 0 "low" ap-evidence + "src.ai_client._strip_private_keys" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_gemini_cli" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_gemini" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_anthropic" "whole_struct" 0 "low" ap-evidence + "src.project_manager.save_project" "mixed" 2 "high" ap-evidence + "src.ai_client._trim_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._send_llama" "whole_struct" 0 "low" ap-evidence + "src.aggregate.build_tier3_context" "whole_struct" 0 "low" ap-evidence + "src.app_controller._offload_entry_payload" "whole_struct" 0 "low" ap-evidence + "src.project_manager.format_discussion" "whole_struct" 0 "low" ap-evidence + "src.project_manager.entry_to_str" "whole_struct" 1 "high" ap-evidence + "src.ai_client._repair_minimax_history" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._strip_stale_file_refreshes" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_deepseek" "whole_struct" 0 "low" ap-evidence + "src.ai_client._add_bleed_derived" "field_by_field" 9 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.aggregate.build_markdown_no_history" "whole_struct" 0 "low" ap-evidence + "src.project_manager.flat_config" "whole_struct" 1 "high" ap-evidence + "src.ai_client._send_llama_native" "whole_struct" 0 "low" ap-evidence + "src.ai_client.ollama_chat" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_qwen" "whole_struct" 0 "low" ap-evidence + "src.app_controller._on_comms_entry" "field_by_field" 10 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._repair_deepseek_history" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._execute_single_tool_call_async" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._repair_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._strip_cache_controls" "whole_struct" 0 "low" ap-evidence + "src.aggregate.run" "field_by_field" 3 "high" ap-evidence + "src.models._save_config_to_disk" "whole_struct" 0 "low" ap-evidence + "src.ai_client._dashscope_call" "whole_struct" 0 "low" ap-evidence + "src.app_controller._start_track_logic_result" "field_by_field" 17 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._estimate_prompt_tokens" "whole_struct" 0 "low" ap-evidence \ === frequency === "per_turn" frequency -\ === frequency_evidence (0 items) === +\ === frequency_evidence (5 items) === + "src.ai_client._extract_dashscope_tool_calls" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.api_hook_client.get_warmup_wait" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence + "src.app_controller.wait" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence + "src.ai_client._dashscope_call" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.app_controller._pending_mma_spawn" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence \ === result_coverage === - 0 0 0 0 result-coverage + 96 96 46 0 result-coverage \ === type_alias_coverage === - 0 0 0 type-alias-coverage + 135 0 135 type-alias-coverage \ === cross_audit_findings === 5 cross-audit-findings \ === decomposition_cost === - 470 0 0 "insufficient_data" "CommsLogEntry: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern." nil 5 true decomp-cost + 470 0 70 "hold" "CommsLogEntry: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 5 true decomp-cost \ === optimization_candidates (0 items) === diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.md b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.md index 5199b8cb..c0147636 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.md +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.md @@ -6,74 +6,419 @@ ## Pipeline summary -- Producers: 0 -- Consumers: 0 -- Distinct producer fqnames: 0 -- Distinct consumer fqnames: 0 -- Access pattern (aggregate): mixed +- Producers: 117 +- Consumers: 66 +- Distinct producer fqnames: 96 +- Distinct consumer fqnames: 46 +- Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data +- Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (0) +## Producers (117) -_(none)_ +### `src\aggregate.py` (1 producer) -## Consumers (0) +- `src.aggregate.build_file_items` (line 158) -_(none)_ +### `src\ai_client.py` (16 producers) + +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) + +### `src\api_hook_client.py` (39 producers) + +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\app_controller.py` (30 producers) + +- `src.app_controller.wait` (line 5205) +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.status` (line 2865) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_status` (line 209) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.get_api_session` (line 2847) + +### `src\models.py` (23 producers) + +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 938) +- `src.models.to_dict` (line 1059) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 1000) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 618) +- `src.models.to_dict` (line 701) + +### `src\project_manager.py` (8 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) + +## Consumers (66) + +### `src\aggregate.py` (5 consumers) + +- `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.run` (line 479) +- `src.aggregate._build_files_section_from_items` (line 300) + +### `src\ai_client.py` (29 consumers) + +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._estimate_message_tokens` (line 1218) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.send` (line 3208) + +### `src\app_controller.py` (5 consumers) + +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._on_comms_entry` (line 4282) +- `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._start_track_logic` (line 4721) + +### `src\models.py` (22 consumers) + +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 506) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 378) +- `src.models.from_dict` (line 1038) +- `src.models.from_dict` (line 1007) +- `src.models.from_dict` (line 747) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.from_dict` (line 866) +- `src.models.from_dict` (line 454) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 630) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 949) +- `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 1072) + +### `src\project_manager.py` (5 consumers) + +- `src.project_manager.save_project` (line 229) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.migrate_from_legacy_config` (line 253) ## Field access matrix -_(no field accesses detected)_ +| consumer | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _token_history | _topological_sort_tickets_result | active_discussion | active_project_path | active_project_root | ai_status | append | config | content | context_files | discussion | encode | engines | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | 1 | 1 | 1 | . | . | 4 | 4 | 1 | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | 2 | 2 | . | . | . | 1 | 1 | 1 | 1 | 4 | . | 1 | . | 1 | . | . | 1 | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_estimate_prompt_tokens` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | + +_... 23 more fields_ ## Access pattern -**Dominant pattern:** mixed -**Evidence count:** 0 +**Dominant pattern:** whole_struct +**Evidence count:** 50 + +**Per-function pattern distribution:** + +- `whole_struct`: 28 functions (56%) +- `mixed`: 18 functions (36%) +- `field_by_field`: 4 functions (8%) ## SSDL Sketch for `CommsLogEntry` ``` [Q:CommsLogEntry entry-point] -> [Q:PCG lookup] + -> [1: _invalidate_token_estimate] [B:check] (branches=0) + -> [2: from_dict] [B:check] (branches=0) + -> [3: build_markdown_from_items] [B:check] (branches=9) + -> [4: from_dict] [B:check] (branches=0) + -> [5: _create_gemini_cache_result] [B:check] (branches=3) + -> [6: _send_grok] [B:check] (branches=14) + -> [7: _strip_private_keys] [B:check] (branches=0) + -> [8: from_dict] [B:check] (branches=0) + -> [9: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [10: from_dict] [B:check] (branches=0) + -> [11: from_dict] [B:check] (branches=0) + -> [12: _send_gemini] [B:is None?] (branches=75) [N:safe] + -> [13: from_dict] [B:check] (branches=0) + -> [14: from_dict] [B:check] (branches=0) + -> [15: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [16: save_project] [B:is None?] (branches=7) [N:safe] + -> [17: _trim_anthropic_history] [B:check] (branches=13) + -> [18: _send_llama] [B:check] (branches=13) + -> [19: build_tier3_context] [B:check] (branches=50) + -> [20: _offload_entry_payload] [B:check] (branches=10) + -> [21: format_discussion] [B:check] (branches=0) + -> [22: entry_to_str] [B:check] (branches=3) + -> [23: _repair_minimax_history] [B:check] (branches=10) + -> [24: from_dict] [B:check] (branches=0) + -> [25: from_dict] [B:check] (branches=0) + -> [26: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [27: _send_deepseek] [B:check] (branches=71) + -> [28: _add_bleed_derived] [B:check] (branches=0) + -> [29: from_dict] [B:check] (branches=0) + -> [30: build_markdown_no_history] [B:check] (branches=0) + -> [31: flat_config] [B:check] (branches=2) + -> [32: _send_llama_native] [B:check] (branches=12) + -> [33: ollama_chat] [B:check] (branches=3) + -> [34: _send_qwen] [B:check] (branches=9) + -> [35: _on_comms_entry] [B:check] (branches=32) + -> [36: from_dict] [B:check] (branches=0) + -> [37: from_dict] [B:check] (branches=0) + -> [38: _repair_deepseek_history] [B:check] (branches=6) + -> [39: from_dict] [B:check] (branches=0) + -> [40: from_dict] [B:check] (branches=0) + -> [41: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [42: from_dict] [B:check] (branches=0) + -> [43: _repair_anthropic_history] [B:check] (branches=6) + -> [44: _strip_cache_controls] [B:check] (branches=4) + -> [45: run] [B:check] (branches=1) + -> [46: _save_config_to_disk] [B:check] (branches=1) + -> [47: _dashscope_call] [B:check] (branches=5) + -> [48: _start_track_logic_result] [B:check] (branches=10) + -> [49: from_dict] [B:check] (branches=0) + -> [50: _estimate_prompt_tokens] [B:check] (branches=2) + -> [51: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [52: from_dict] [B:check] (branches=0) + -> [53: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [54: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [55: _pre_dispatch] [B:check] (branches=8) + -> [56: from_dict] [B:check] (branches=0) + -> [57: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [58: _trim_minimax_history] [B:check] (branches=8) + -> [59: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [60: _start_track_logic] [B:check] (branches=1) + -> [61: from_dict] [B:check] (branches=0) + -> [62: from_dict] [B:check] (branches=0) + -> [63: from_dict] [B:check] (branches=0) + -> [64: migrate_from_legacy_config] [B:check] (branches=2) + -> [65: _send_minimax] [B:check] (branches=11) + -> [66: send] [B:check] (branches=19) -> [T:done] ``` -**Effective codepaths:** 0 (sum of 2^branches across 0 consumers) -**Total branch points:** 0 -**Nil-check functions:** 0 +**Effective codepaths:** 40140116231395706750390 (sum of 2^branches across 66 consumers) +**Total branch points:** 541 +**Nil-check functions:** 9 **Defusing opportunities:** -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `commslogentry_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. - - Effective codepaths: 0 -> 1 +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 40140116231395706750390 -> 40140116231395706750372 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `commslogentry_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 135 field-check branches to 1 cache lookup. + - Effective codepaths: 40140116231395706750390 -> 135 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 40140116231395706750390 -> 66 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 0 +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions ## Result coverage -**Summary:** 0 producers, 0 consumers +**Summary:** 96 producers, 46 consumers | metric | value | |---|---| -| total producers | 0 | -| result producers | 0 | -| total consumers | 0 | +| total producers | 96 | +| result producers | 96 | +| total consumers | 46 | | result consumers | 0 | ## Type alias coverage -**Summary:** 0 sites +**Summary:** 135 sites; 0 typed (0%); 135 untyped (100%) | metric | value | |---|---| -| total field-access sites | 0 | +| total field-access sites | 135 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 0 | +| untyped sites (wildcard) | 135 | ## Cross-audit findings @@ -83,15 +428,59 @@ _(no cross-audit findings mapped to this aggregate)_ **Current cost estimate:** 470 us/turn **Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** CommsLogEntry: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** CommsLogEntry: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. **Struct field count (estimated):** 5 **Struct frozen:** True ## Struct shape (inferred from producer returns) -_(no producers; cannot infer shape)_ +| field | access count | access pattern | +|---|---|---| +| `content` | 16 | hot | +| `marker` | 16 | hot | +| `get` | 7 | hot | +| `append` | 3 | hot | +| `pop` | 2 | used | +| `files` | 2 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `estimated_prompt_tokens` | 1 | used | +| `max_prompt_tokens` | 1 | used | +| `utilization_pct` | 1 | used | +| `headroom` | 1 | used | +| `would_trim` | 1 | used | +| `sys_tokens` | 1 | used | +| `tool_tokens` | 1 | used | +| `history_tokens` | 1 | used | +| `local_ts` | 1 | used | +| `_offload_entry_payload` | 1 | used | +| `ui_auto_add_history` | 1 | used | +| `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `items` | 1 | used | +| `output` | 1 | used | +| `ai_status` | 1 | used | +| `context_files` | 1 | used | +| `_pending_gui_tasks_lock` | 1 | used | +| `_topological_sort_tickets_result` | 1 | used | +| `active_project_root` | 1 | used | +| `event_queue` | 1 | used | +| `engines` | 1 | used | +| `project` | 1 | used | +| `active_discussion` | 1 | used | +| `submit_io` | 1 | used | +| `tracks` | 1 | used | +| `config` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_pending_gui_tasks` | 1 | used | +| `mma_step_mode` | 1 | used | +| `active_project_path` | 1 | used | ## Optimization candidates @@ -99,6 +488,71 @@ _(no optimization candidates generated)_ ## Verdict -CommsLogEntry: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +CommsLogEntry: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix + +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | +| `src.ai_client._send_grok` | `whole_struct` | | low | +| `src.ai_client._strip_private_keys` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_anthropic` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | +| `src.ai_client._send_llama` | `whole_struct` | | low | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | +| `src.ai_client._send_deepseek` | `whole_struct` | | low | +| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._send_qwen` | `whole_struct` | | low | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | +| `src.models._save_config_to_disk` | `whole_struct` | | low | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._estimate_prompt_tokens` | `whole_struct` | | low | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.ai_client._extract_dashscope_tool_calls` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller.wait` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.ai_client._dashscope_call` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.tree b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.tree index 8b8a6532..3af092d3 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.tree +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/CommsLogEntry.tree @@ -1,12 +1,195 @@ Metadata: CommsLogEntry |- kind: typealias |- memory_dim: discussion -|- producers: [0] -|- consumers: [0] -|- access_pattern: mixed +|- producers: [117] +| |- src.ai_client._extract_dashscope_tool_calls (producer) +| |- src.api_hook_client.get_warmup_wait (producer) +| |- src.app_controller.wait (producer) +| |- src.ai_client._dashscope_call (producer) +| |- src.app_controller._pending_mma_spawn (producer) +| |- src.api_hook_client.wait_for_event (producer) +| |- src.api_hook_client.clear_events (producer) +| |- src.project_manager.get_all_tracks (producer) +| |- src.app_controller._offload_entry_payload (producer) +| |- src.ai_client._strip_private_keys (producer) +| |- src.app_controller._api_get_diagnostics (producer) +| |- src.app_controller.get_gui_state (producer) +| |- src.app_controller.load_config (producer) +| |- src.api_hook_client.get_warmup_status (producer) +| |- src.api_hook_client.get_project (producer) +| |- src.api_hook_client.get_mma_workers (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.reject_patch (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller._api_get_session (producer) +| |- src.ai_client._parse_tool_args_result (producer) +| |- src.app_controller._api_pending_actions (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.load_history (producer) +| |- src.app_controller.get_context (producer) +| |- src.ai_client._build_chunked_context_blocks (producer) +| |- src.ai_client._get_anthropic_tools (producer) +| |- src.api_hook_client.get_gui_state (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client._get_deepseek_tools (producer) +| |- src.models.parse_history_entries (producer) +| |- src.api_hook_client.get_events (producer) +| |- src.ai_client._pre_dispatch (producer) +| |- src.project_manager.str_to_entry (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_session (producer) +| |- src.app_controller.token_stats (producer) +| |- src.api_hook_client.get_io_pool_status (producer) +| |- src.api_hook_client.trigger_patch (producer) +| |- src.api_hook_client.get_gui_health (producer) +| |- src.ai_client.get_gemini_cache_stats (producer) +| |- src.app_controller._api_get_api_project (producer) +| |- src.api_hook_client.get_status (producer) +| |- src.app_controller._api_get_context (producer) +| |- src.app_controller._api_token_stats (producer) +| |- src.api_hook_client.get_context_state (producer) +| |- src.api_hook_client.set_value (producer) +| |- src.app_controller.get_mma_status (producer) +| |- src.api_hook_client.post_gui (producer) +| |- src.api_hook_client.get_gui_diagnostics (producer) +| |- src.app_controller._api_get_performance (producer) +| |- src.app_controller._api_get_api_session (producer) +| |- src.api_hook_client.get_mma_status (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.aggregate.build_file_items (producer) +| |- src.api_hook_client.get_startup_timeline (producer) +| |- src.api_hook_client.get_node_status (producer) +| |- src.api_hook_client.get_performance (producer) +| |- src.ai_client._load_credentials (producer) +| |- src.app_controller._api_get_gui_state (producer) +| |- src.project_manager.default_project (producer) +| |- src.api_hook_client.post_session (producer) +| |- src.app_controller.get_performance (producer) +| |- src.project_manager.migrate_from_legacy_config (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.push_event (producer) +| |- src.api_hook_client.get_warmup_canaries (producer) +| |- src.api_hook_client.drag (producer) +| |- src.app_controller.pending_actions (producer) +| |- src.ai_client.get_token_stats (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.status (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.apply_patch (producer) +| |- src.models._load_config_from_disk (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.app_controller._api_get_mma_status (producer) +| |- src.api_hook_client.get_patch_status (producer) +| |- src.app_controller.generate (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.get_api_project (producer) +| |- src.app_controller._api_status (producer) +| |- src.project_manager.flat_config (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client.ollama_chat (producer) +| |- src.api_hook_client.wait_for_project_switch (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.click (producer) +| |- src.ai_client.get_comms_log (producer) +| |- src.app_controller._api_generate (producer) +| |- src.api_hook_client.select_list_item (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_project_switch_status (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.load_project (producer) +| |- src.app_controller.get_session (producer) +| |- src.api_hook_client.get_system_telemetry (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client._make_request (producer) +| |- src.app_controller.get_diagnostics (producer) +| |- src.app_controller.get_session_insights (producer) +| |- src.ai_client._content_block_to_dict (producer) +| |- src.api_hook_client.select_tab (producer) +| |- src.app_controller._pending_mma_approval (producer) +| |- src.ai_client._add_bleed_derived (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.right_click (producer) +| |- src.app_controller.get_api_session (producer) +| |- src.project_manager.default_discussion (producer) +| |- src.ai_client._send_cli_round_result (producer) +| |- src.api_hook_client.get_financial_metrics (producer) +|- consumers: [66] +| |- src.ai_client._invalidate_token_estimate (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_from_items (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._create_gemini_cache_result (consumer) +| |- src.ai_client._send_grok (consumer) +| |- src.ai_client._strip_private_keys (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_gemini_cli (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_gemini (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_anthropic (consumer) +| |- src.project_manager.save_project (consumer) +| |- src.ai_client._trim_anthropic_history (consumer) +| |- src.ai_client._send_llama (consumer) +| |- src.aggregate.build_tier3_context (consumer) +| |- src.app_controller._offload_entry_payload (consumer) +| |- src.project_manager.format_discussion (consumer) +| |- src.project_manager.entry_to_str (consumer) +| |- src.ai_client._repair_minimax_history (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._strip_stale_file_refreshes (consumer) +| |- src.ai_client._send_deepseek (consumer) +| |- src.ai_client._add_bleed_derived (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_no_history (consumer) +| |- src.project_manager.flat_config (consumer) +| |- src.ai_client._send_llama_native (consumer) +| |- src.ai_client.ollama_chat (consumer) +| |- src.ai_client._send_qwen (consumer) +| |- src.app_controller._on_comms_entry (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._repair_deepseek_history (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._execute_single_tool_call_async (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._repair_anthropic_history (consumer) +| |- src.ai_client._strip_cache_controls (consumer) +| |- src.aggregate.run (consumer) +| |- src.models._save_config_to_disk (consumer) +| |- src.ai_client._dashscope_call (consumer) +| |- src.app_controller._start_track_logic_result (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._estimate_prompt_tokens (consumer) +| |- src.ai_client._append_comms (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._estimate_message_tokens (consumer) +| |- src.ai_client._add_history_cache_breakpoint (consumer) +| |- src.ai_client._pre_dispatch (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate._build_files_section_from_items (consumer) +| |- src.ai_client._trim_minimax_history (consumer) +| |- src.app_controller._refresh_api_metrics (consumer) +| |- src.app_controller._start_track_logic (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.project_manager.migrate_from_legacy_config (consumer) +| |- src.ai_client._send_minimax (consumer) +| |- src.ai_client.send (consumer) +|- access_pattern: whole_struct |- frequency: per_turn -|- result_coverage: 0 producers, 0 consumers -|- type_alias_coverage: 0 sites +|- result_coverage: 96 producers, 46 consumers +|- type_alias_coverage: 135 sites; 0 typed (0%); 135 untyped (100%) |- cross_audit_findings: 0 findings -|- decomposition_cost: insufficient_data (470 us) +|- decomposition_cost: hold (470 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.dsl index 32547064..0c863ab3 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.dsl +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.dsl @@ -7,31 +7,269 @@ \ === memory_dim === "curation" mem-dim -\ === producers (0 items) === +\ === producers (117 items) === + "src.ai_client._extract_dashscope_tool_calls" "src\ai_client.py" 2754 "producer" fn-ref + "src.api_hook_client.get_warmup_wait" "src\api_hook_client.py" 332 "producer" fn-ref + "src.app_controller.wait" "src\app_controller.py" 5205 "producer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "producer" fn-ref + "src.app_controller._pending_mma_spawn" "src\app_controller.py" 2772 "producer" fn-ref + "src.api_hook_client.wait_for_event" "src\api_hook_client.py" 136 "producer" fn-ref + "src.api_hook_client.clear_events" "src\api_hook_client.py" 129 "producer" fn-ref + "src.project_manager.get_all_tracks" "src\project_manager.py" 342 "producer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "producer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "producer" fn-ref + "src.app_controller._api_get_diagnostics" "src\app_controller.py" 202 "producer" fn-ref + "src.app_controller.get_gui_state" "src\app_controller.py" 2829 "producer" fn-ref + "src.app_controller.load_config" "src\app_controller.py" 5142 "producer" fn-ref + "src.api_hook_client.get_warmup_status" "src\api_hook_client.py" 325 "producer" fn-ref + "src.api_hook_client.get_project" "src\api_hook_client.py" 367 "producer" fn-ref + "src.api_hook_client.get_mma_workers" "src\api_hook_client.py" 546 "producer" fn-ref + "src.models.to_dict" "src\models.py" 646 "producer" fn-ref + "src.api_hook_client.reject_patch" "src\api_hook_client.py" 288 "producer" fn-ref + "src.models.to_dict" "src\models.py" 406 "producer" fn-ref + "src.app_controller._api_get_session" "src\app_controller.py" 374 "producer" fn-ref + "src.ai_client._parse_tool_args_result" "src\ai_client.py" 741 "producer" fn-ref + "src.app_controller._api_pending_actions" "src\app_controller.py" 335 "producer" fn-ref + "src.models.to_dict" "src\models.py" 855 "producer" fn-ref + "src.project_manager.load_history" "src\project_manager.py" 209 "producer" fn-ref + "src.app_controller.get_context" "src\app_controller.py" 2892 "producer" fn-ref + "src.ai_client._build_chunked_context_blocks" "src\ai_client.py" 1281 "producer" fn-ref + "src.ai_client._get_anthropic_tools" "src\ai_client.py" 664 "producer" fn-ref + "src.api_hook_client.get_gui_state" "src\api_hook_client.py" 165 "producer" fn-ref + "src.models.to_dict" "src\models.py" 938 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1059 "producer" fn-ref + "src.ai_client._get_deepseek_tools" "src\ai_client.py" 1194 "producer" fn-ref + "src.models.parse_history_entries" "src\models.py" 214 "producer" fn-ref + "src.api_hook_client.get_events" "src\api_hook_client.py" 124 "producer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "producer" fn-ref + "src.project_manager.str_to_entry" "src\project_manager.py" 75 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 473 "producer" fn-ref + "src.models.to_dict" "src\models.py" 794 "producer" fn-ref + "src.api_hook_client.get_session" "src\api_hook_client.py" 502 "producer" fn-ref + "src.app_controller.token_stats" "src\app_controller.py" 2898 "producer" fn-ref + "src.api_hook_client.get_io_pool_status" "src\api_hook_client.py" 420 "producer" fn-ref + "src.api_hook_client.trigger_patch" "src\api_hook_client.py" 274 "producer" fn-ref + "src.api_hook_client.get_gui_health" "src\api_hook_client.py" 434 "producer" fn-ref + "src.ai_client.get_gemini_cache_stats" "src\ai_client.py" 1604 "producer" fn-ref + "src.app_controller._api_get_api_project" "src\app_controller.py" 188 "producer" fn-ref + "src.api_hook_client.get_status" "src\api_hook_client.py" 105 "producer" fn-ref + "src.app_controller._api_get_context" "src\app_controller.py" 398 "producer" fn-ref + "src.app_controller._api_token_stats" "src\app_controller.py" 417 "producer" fn-ref + "src.api_hook_client.get_context_state" "src\api_hook_client.py" 491 "producer" fn-ref + "src.api_hook_client.set_value" "src\api_hook_client.py" 212 "producer" fn-ref + "src.app_controller.get_mma_status" "src\app_controller.py" 2835 "producer" fn-ref + "src.api_hook_client.post_gui" "src\api_hook_client.py" 149 "producer" fn-ref + "src.api_hook_client.get_gui_diagnostics" "src\api_hook_client.py" 311 "producer" fn-ref + "src.app_controller._api_get_performance" "src\app_controller.py" 195 "producer" fn-ref + "src.app_controller._api_get_api_session" "src\app_controller.py" 170 "producer" fn-ref + "src.api_hook_client.get_mma_status" "src\api_hook_client.py" 539 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1000 "producer" fn-ref + "src.models.to_dict" "src\models.py" 672 "producer" fn-ref + "src.models.to_dict" "src\models.py" 355 "producer" fn-ref + "src.aggregate.build_file_items" "src\aggregate.py" 158 "producer" fn-ref + "src.api_hook_client.get_startup_timeline" "src\api_hook_client.py" 353 "producer" fn-ref + "src.api_hook_client.get_node_status" "src\api_hook_client.py" 532 "producer" fn-ref + "src.api_hook_client.get_performance" "src\api_hook_client.py" 318 "producer" fn-ref + "src.ai_client._load_credentials" "src\ai_client.py" 282 "producer" fn-ref + "src.app_controller._api_get_gui_state" "src\app_controller.py" 123 "producer" fn-ref + "src.project_manager.default_project" "src\project_manager.py" 123 "producer" fn-ref + "src.api_hook_client.post_session" "src\api_hook_client.py" 117 "producer" fn-ref + "src.app_controller.get_performance" "src\app_controller.py" 2856 "producer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "producer" fn-ref + "src.models.to_dict" "src\models.py" 486 "producer" fn-ref + "src.models.to_dict" "src\models.py" 913 "producer" fn-ref + "src.models.to_dict" "src\models.py" 596 "producer" fn-ref + "src.api_hook_client.push_event" "src\api_hook_client.py" 156 "producer" fn-ref + "src.api_hook_client.get_warmup_canaries" "src\api_hook_client.py" 342 "producer" fn-ref + "src.api_hook_client.drag" "src\api_hook_client.py" 230 "producer" fn-ref + "src.app_controller.pending_actions" "src\app_controller.py" 2874 "producer" fn-ref + "src.ai_client.get_token_stats" "src\ai_client.py" 3185 "producer" fn-ref + "src.models.to_dict" "src\models.py" 886 "producer" fn-ref + "src.app_controller.status" "src\app_controller.py" 2865 "producer" fn-ref + "src.models.to_dict" "src\models.py" 558 "producer" fn-ref + "src.api_hook_client.apply_patch" "src\api_hook_client.py" 281 "producer" fn-ref + "src.models._load_config_from_disk" "src\models.py" 186 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 470 "producer" fn-ref + "src.app_controller._api_get_mma_status" "src\app_controller.py" 144 "producer" fn-ref + "src.api_hook_client.get_patch_status" "src\api_hook_client.py" 295 "producer" fn-ref + "src.app_controller.generate" "src\app_controller.py" 2868 "producer" fn-ref + "src.models.to_dict" "src\models.py" 441 "producer" fn-ref + "src.app_controller.get_api_project" "src\app_controller.py" 2853 "producer" fn-ref + "src.app_controller._api_status" "src\app_controller.py" 209 "producer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1024 "producer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "producer" fn-ref + "src.api_hook_client.wait_for_project_switch" "src\api_hook_client.py" 389 "producer" fn-ref + "src.models.to_dict" "src\models.py" 971 "producer" fn-ref + "src.api_hook_client.click" "src\api_hook_client.py" 223 "producer" fn-ref + "src.ai_client.get_comms_log" "src\ai_client.py" 273 "producer" fn-ref + "src.app_controller._api_generate" "src\app_controller.py" 221 "producer" fn-ref + "src.api_hook_client.select_list_item" "src\api_hook_client.py" 256 "producer" fn-ref + "src.models.to_dict" "src\models.py" 288 "producer" fn-ref + "src.api_hook_client.get_project_switch_status" "src\api_hook_client.py" 374 "producer" fn-ref + "src.models.to_dict" "src\models.py" 737 "producer" fn-ref + "src.project_manager.load_project" "src\project_manager.py" 186 "producer" fn-ref + "src.app_controller.get_session" "src\app_controller.py" 2883 "producer" fn-ref + "src.api_hook_client.get_system_telemetry" "src\api_hook_client.py" 524 "producer" fn-ref + "src.models.to_dict" "src\models.py" 618 "producer" fn-ref + "src.api_hook_client._make_request" "src\api_hook_client.py" 65 "producer" fn-ref + "src.app_controller.get_diagnostics" "src\app_controller.py" 2862 "producer" fn-ref + "src.app_controller.get_session_insights" "src\app_controller.py" 3049 "producer" fn-ref + "src.ai_client._content_block_to_dict" "src\ai_client.py" 1200 "producer" fn-ref + "src.api_hook_client.select_tab" "src\api_hook_client.py" 263 "producer" fn-ref + "src.app_controller._pending_mma_approval" "src\app_controller.py" 2776 "producer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "producer" fn-ref + "src.models.to_dict" "src\models.py" 701 "producer" fn-ref + "src.api_hook_client.right_click" "src\api_hook_client.py" 237 "producer" fn-ref + "src.app_controller.get_api_session" "src\app_controller.py" 2847 "producer" fn-ref + "src.project_manager.default_discussion" "src\project_manager.py" 117 "producer" fn-ref + "src.ai_client._send_cli_round_result" "src\ai_client.py" 1746 "producer" fn-ref + "src.api_hook_client.get_financial_metrics" "src\api_hook_client.py" 520 "producer" fn-ref -\ === consumers (0 items) === +\ === consumers (66 items) === + "src.ai_client._invalidate_token_estimate" "src\ai_client.py" 1240 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 920 "consumer" fn-ref + "src.aggregate.build_markdown_from_items" "src\aggregate.py" 348 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 603 "consumer" fn-ref + "src.ai_client._create_gemini_cache_result" "src\ai_client.py" 1706 "consumer" fn-ref + "src.ai_client._send_grok" "src\ai_client.py" 2530 "consumer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 506 "consumer" fn-ref + "src.ai_client._send_gemini_cli" "src\ai_client.py" 2019 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 814 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 893 "consumer" fn-ref + "src.ai_client._send_gemini" "src\ai_client.py" 1802 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 378 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1038 "consumer" fn-ref + "src.ai_client._send_anthropic" "src\ai_client.py" 1405 "consumer" fn-ref + "src.project_manager.save_project" "src\project_manager.py" 229 "consumer" fn-ref + "src.ai_client._trim_anthropic_history" "src\ai_client.py" 1353 "consumer" fn-ref + "src.ai_client._send_llama" "src\ai_client.py" 2858 "consumer" fn-ref + "src.aggregate.build_tier3_context" "src\aggregate.py" 382 "consumer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "consumer" fn-ref + "src.project_manager.format_discussion" "src\project_manager.py" 69 "consumer" fn-ref + "src.project_manager.entry_to_str" "src\project_manager.py" 49 "consumer" fn-ref + "src.ai_client._repair_minimax_history" "src\ai_client.py" 2462 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1007 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 747 "consumer" fn-ref + "src.ai_client._strip_stale_file_refreshes" "src\ai_client.py" 1253 "consumer" fn-ref + "src.ai_client._send_deepseek" "src\ai_client.py" 2165 "consumer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 683 "consumer" fn-ref + "src.aggregate.build_markdown_no_history" "src\aggregate.py" 366 "consumer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "consumer" fn-ref + "src.ai_client._send_llama_native" "src\ai_client.py" 2958 "consumer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "consumer" fn-ref + "src.ai_client._send_qwen" "src\ai_client.py" 2773 "consumer" fn-ref + "src.app_controller._on_comms_entry" "src\app_controller.py" 4282 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 712 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 866 "consumer" fn-ref + "src.ai_client._repair_deepseek_history" "src\ai_client.py" 2138 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 454 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 575 "consumer" fn-ref + "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 945 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 630 "consumer" fn-ref + "src.ai_client._repair_anthropic_history" "src\ai_client.py" 1381 "consumer" fn-ref + "src.ai_client._strip_cache_controls" "src\ai_client.py" 1291 "consumer" fn-ref + "src.aggregate.run" "src\aggregate.py" 479 "consumer" fn-ref + "src.models._save_config_to_disk" "src\models.py" 199 "consumer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "consumer" fn-ref + "src.app_controller._start_track_logic_result" "src\app_controller.py" 4728 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 949 "consumer" fn-ref + "src.ai_client._estimate_prompt_tokens" "src\ai_client.py" 1243 "consumer" fn-ref + "src.ai_client._append_comms" "src\ai_client.py" 257 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 982 "consumer" fn-ref + "src.ai_client._estimate_message_tokens" "src\ai_client.py" 1218 "consumer" fn-ref + "src.ai_client._add_history_cache_breakpoint" "src\ai_client.py" 1299 "consumer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 295 "consumer" fn-ref + "src.aggregate._build_files_section_from_items" "src\aggregate.py" 300 "consumer" fn-ref + "src.ai_client._trim_minimax_history" "src\ai_client.py" 2482 "consumer" fn-ref + "src.app_controller._refresh_api_metrics" "src\app_controller.py" 3074 "consumer" fn-ref + "src.app_controller._start_track_logic" "src\app_controller.py" 4721 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 416 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 656 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1072 "consumer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "consumer" fn-ref + "src.ai_client._send_minimax" "src\ai_client.py" 2616 "consumer" fn-ref + "src.ai_client.send" "src\ai_client.py" 3208 "consumer" fn-ref \ === access_pattern === - "mixed" access-pattern + "whole_struct" access-pattern -\ === access_pattern_evidence (0 items) === +\ === access_pattern_evidence (50 items) === + "src.ai_client._invalidate_token_estimate" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.aggregate.build_markdown_from_items" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._create_gemini_cache_result" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_grok" "whole_struct" 0 "low" ap-evidence + "src.ai_client._strip_private_keys" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_gemini_cli" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_gemini" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_anthropic" "whole_struct" 0 "low" ap-evidence + "src.project_manager.save_project" "mixed" 2 "high" ap-evidence + "src.ai_client._trim_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._send_llama" "whole_struct" 0 "low" ap-evidence + "src.aggregate.build_tier3_context" "whole_struct" 0 "low" ap-evidence + "src.app_controller._offload_entry_payload" "whole_struct" 0 "low" ap-evidence + "src.project_manager.format_discussion" "whole_struct" 0 "low" ap-evidence + "src.project_manager.entry_to_str" "whole_struct" 1 "high" ap-evidence + "src.ai_client._repair_minimax_history" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._strip_stale_file_refreshes" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_deepseek" "whole_struct" 0 "low" ap-evidence + "src.ai_client._add_bleed_derived" "field_by_field" 9 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.aggregate.build_markdown_no_history" "whole_struct" 0 "low" ap-evidence + "src.project_manager.flat_config" "whole_struct" 1 "high" ap-evidence + "src.ai_client._send_llama_native" "whole_struct" 0 "low" ap-evidence + "src.ai_client.ollama_chat" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_qwen" "whole_struct" 0 "low" ap-evidence + "src.app_controller._on_comms_entry" "field_by_field" 10 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._repair_deepseek_history" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._execute_single_tool_call_async" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._repair_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._strip_cache_controls" "whole_struct" 0 "low" ap-evidence + "src.aggregate.run" "field_by_field" 3 "high" ap-evidence + "src.models._save_config_to_disk" "whole_struct" 0 "low" ap-evidence + "src.ai_client._dashscope_call" "whole_struct" 0 "low" ap-evidence + "src.app_controller._start_track_logic_result" "field_by_field" 17 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._estimate_prompt_tokens" "whole_struct" 0 "low" ap-evidence \ === frequency === "per_turn" frequency -\ === frequency_evidence (0 items) === +\ === frequency_evidence (5 items) === + "src.ai_client._extract_dashscope_tool_calls" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.api_hook_client.get_warmup_wait" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence + "src.app_controller.wait" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence + "src.ai_client._dashscope_call" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.app_controller._pending_mma_spawn" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence \ === result_coverage === - 0 0 0 0 result-coverage + 96 96 46 0 result-coverage \ === type_alias_coverage === - 0 0 0 type-alias-coverage + 135 0 135 type-alias-coverage \ === cross_audit_findings === 5 cross-audit-findings \ === decomposition_cost === - 470 0 0 "insufficient_data" "FileItem: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern." nil 5 true decomp-cost + 470 0 70 "hold" "FileItem: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 5 true decomp-cost \ === optimization_candidates (0 items) === diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.md b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.md index 93e9edc2..0f2ac049 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.md +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.md @@ -6,74 +6,419 @@ ## Pipeline summary -- Producers: 0 -- Consumers: 0 -- Distinct producer fqnames: 0 -- Distinct consumer fqnames: 0 -- Access pattern (aggregate): mixed +- Producers: 117 +- Consumers: 66 +- Distinct producer fqnames: 96 +- Distinct consumer fqnames: 46 +- Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data +- Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (0) +## Producers (117) -_(none)_ +### `src\aggregate.py` (1 producer) -## Consumers (0) +- `src.aggregate.build_file_items` (line 158) -_(none)_ +### `src\ai_client.py` (16 producers) + +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) + +### `src\api_hook_client.py` (39 producers) + +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\app_controller.py` (30 producers) + +- `src.app_controller.wait` (line 5205) +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.status` (line 2865) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_status` (line 209) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.get_api_session` (line 2847) + +### `src\models.py` (23 producers) + +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 938) +- `src.models.to_dict` (line 1059) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 1000) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 618) +- `src.models.to_dict` (line 701) + +### `src\project_manager.py` (8 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) + +## Consumers (66) + +### `src\aggregate.py` (5 consumers) + +- `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.run` (line 479) +- `src.aggregate._build_files_section_from_items` (line 300) + +### `src\ai_client.py` (29 consumers) + +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._estimate_message_tokens` (line 1218) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.send` (line 3208) + +### `src\app_controller.py` (5 consumers) + +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._on_comms_entry` (line 4282) +- `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._start_track_logic` (line 4721) + +### `src\models.py` (22 consumers) + +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 506) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 378) +- `src.models.from_dict` (line 1038) +- `src.models.from_dict` (line 1007) +- `src.models.from_dict` (line 747) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.from_dict` (line 866) +- `src.models.from_dict` (line 454) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 630) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 949) +- `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 1072) + +### `src\project_manager.py` (5 consumers) + +- `src.project_manager.save_project` (line 229) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.migrate_from_legacy_config` (line 253) ## Field access matrix -_(no field accesses detected)_ +| consumer | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _token_history | _topological_sort_tickets_result | active_discussion | active_project_path | active_project_root | ai_status | append | config | content | context_files | discussion | encode | engines | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | 1 | 1 | 1 | . | . | 4 | 4 | 1 | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | 2 | 2 | . | . | . | 1 | 1 | 1 | 1 | 4 | . | 1 | . | 1 | . | . | 1 | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_estimate_prompt_tokens` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | + +_... 23 more fields_ ## Access pattern -**Dominant pattern:** mixed -**Evidence count:** 0 +**Dominant pattern:** whole_struct +**Evidence count:** 50 + +**Per-function pattern distribution:** + +- `whole_struct`: 28 functions (56%) +- `mixed`: 18 functions (36%) +- `field_by_field`: 4 functions (8%) ## SSDL Sketch for `FileItem` ``` [Q:FileItem entry-point] -> [Q:PCG lookup] + -> [1: _invalidate_token_estimate] [B:check] (branches=0) + -> [2: from_dict] [B:check] (branches=0) + -> [3: build_markdown_from_items] [B:check] (branches=9) + -> [4: from_dict] [B:check] (branches=0) + -> [5: _create_gemini_cache_result] [B:check] (branches=3) + -> [6: _send_grok] [B:check] (branches=14) + -> [7: _strip_private_keys] [B:check] (branches=0) + -> [8: from_dict] [B:check] (branches=0) + -> [9: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [10: from_dict] [B:check] (branches=0) + -> [11: from_dict] [B:check] (branches=0) + -> [12: _send_gemini] [B:is None?] (branches=75) [N:safe] + -> [13: from_dict] [B:check] (branches=0) + -> [14: from_dict] [B:check] (branches=0) + -> [15: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [16: save_project] [B:is None?] (branches=7) [N:safe] + -> [17: _trim_anthropic_history] [B:check] (branches=13) + -> [18: _send_llama] [B:check] (branches=13) + -> [19: build_tier3_context] [B:check] (branches=50) + -> [20: _offload_entry_payload] [B:check] (branches=10) + -> [21: format_discussion] [B:check] (branches=0) + -> [22: entry_to_str] [B:check] (branches=3) + -> [23: _repair_minimax_history] [B:check] (branches=10) + -> [24: from_dict] [B:check] (branches=0) + -> [25: from_dict] [B:check] (branches=0) + -> [26: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [27: _send_deepseek] [B:check] (branches=71) + -> [28: _add_bleed_derived] [B:check] (branches=0) + -> [29: from_dict] [B:check] (branches=0) + -> [30: build_markdown_no_history] [B:check] (branches=0) + -> [31: flat_config] [B:check] (branches=2) + -> [32: _send_llama_native] [B:check] (branches=12) + -> [33: ollama_chat] [B:check] (branches=3) + -> [34: _send_qwen] [B:check] (branches=9) + -> [35: _on_comms_entry] [B:check] (branches=32) + -> [36: from_dict] [B:check] (branches=0) + -> [37: from_dict] [B:check] (branches=0) + -> [38: _repair_deepseek_history] [B:check] (branches=6) + -> [39: from_dict] [B:check] (branches=0) + -> [40: from_dict] [B:check] (branches=0) + -> [41: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [42: from_dict] [B:check] (branches=0) + -> [43: _repair_anthropic_history] [B:check] (branches=6) + -> [44: _strip_cache_controls] [B:check] (branches=4) + -> [45: run] [B:check] (branches=1) + -> [46: _save_config_to_disk] [B:check] (branches=1) + -> [47: _dashscope_call] [B:check] (branches=5) + -> [48: _start_track_logic_result] [B:check] (branches=10) + -> [49: from_dict] [B:check] (branches=0) + -> [50: _estimate_prompt_tokens] [B:check] (branches=2) + -> [51: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [52: from_dict] [B:check] (branches=0) + -> [53: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [54: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [55: _pre_dispatch] [B:check] (branches=8) + -> [56: from_dict] [B:check] (branches=0) + -> [57: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [58: _trim_minimax_history] [B:check] (branches=8) + -> [59: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [60: _start_track_logic] [B:check] (branches=1) + -> [61: from_dict] [B:check] (branches=0) + -> [62: from_dict] [B:check] (branches=0) + -> [63: from_dict] [B:check] (branches=0) + -> [64: migrate_from_legacy_config] [B:check] (branches=2) + -> [65: _send_minimax] [B:check] (branches=11) + -> [66: send] [B:check] (branches=19) -> [T:done] ``` -**Effective codepaths:** 0 (sum of 2^branches across 0 consumers) -**Total branch points:** 0 -**Nil-check functions:** 0 +**Effective codepaths:** 40140116231395706750390 (sum of 2^branches across 66 consumers) +**Total branch points:** 541 +**Nil-check functions:** 9 **Defusing opportunities:** -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `fileitem_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. - - Effective codepaths: 0 -> 1 +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 40140116231395706750390 -> 40140116231395706750372 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `fileitem_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 135 field-check branches to 1 cache lookup. + - Effective codepaths: 40140116231395706750390 -> 135 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 40140116231395706750390 -> 66 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 0 +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions ## Result coverage -**Summary:** 0 producers, 0 consumers +**Summary:** 96 producers, 46 consumers | metric | value | |---|---| -| total producers | 0 | -| result producers | 0 | -| total consumers | 0 | +| total producers | 96 | +| result producers | 96 | +| total consumers | 46 | | result consumers | 0 | ## Type alias coverage -**Summary:** 0 sites +**Summary:** 135 sites; 0 typed (0%); 135 untyped (100%) | metric | value | |---|---| -| total field-access sites | 0 | +| total field-access sites | 135 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 0 | +| untyped sites (wildcard) | 135 | ## Cross-audit findings @@ -83,15 +428,59 @@ _(no cross-audit findings mapped to this aggregate)_ **Current cost estimate:** 470 us/turn **Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** FileItem: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** FileItem: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. **Struct field count (estimated):** 5 **Struct frozen:** True ## Struct shape (inferred from producer returns) -_(no producers; cannot infer shape)_ +| field | access count | access pattern | +|---|---|---| +| `content` | 16 | hot | +| `marker` | 16 | hot | +| `get` | 7 | hot | +| `append` | 3 | hot | +| `pop` | 2 | used | +| `files` | 2 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `estimated_prompt_tokens` | 1 | used | +| `max_prompt_tokens` | 1 | used | +| `utilization_pct` | 1 | used | +| `headroom` | 1 | used | +| `would_trim` | 1 | used | +| `sys_tokens` | 1 | used | +| `tool_tokens` | 1 | used | +| `history_tokens` | 1 | used | +| `local_ts` | 1 | used | +| `_offload_entry_payload` | 1 | used | +| `ui_auto_add_history` | 1 | used | +| `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `items` | 1 | used | +| `output` | 1 | used | +| `ai_status` | 1 | used | +| `context_files` | 1 | used | +| `_pending_gui_tasks_lock` | 1 | used | +| `_topological_sort_tickets_result` | 1 | used | +| `active_project_root` | 1 | used | +| `event_queue` | 1 | used | +| `engines` | 1 | used | +| `project` | 1 | used | +| `active_discussion` | 1 | used | +| `submit_io` | 1 | used | +| `tracks` | 1 | used | +| `config` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_pending_gui_tasks` | 1 | used | +| `mma_step_mode` | 1 | used | +| `active_project_path` | 1 | used | ## Optimization candidates @@ -99,6 +488,71 @@ _(no optimization candidates generated)_ ## Verdict -FileItem: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +FileItem: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix + +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | +| `src.ai_client._send_grok` | `whole_struct` | | low | +| `src.ai_client._strip_private_keys` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_anthropic` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | +| `src.ai_client._send_llama` | `whole_struct` | | low | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | +| `src.ai_client._send_deepseek` | `whole_struct` | | low | +| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._send_qwen` | `whole_struct` | | low | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | +| `src.models._save_config_to_disk` | `whole_struct` | | low | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._estimate_prompt_tokens` | `whole_struct` | | low | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.ai_client._extract_dashscope_tool_calls` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller.wait` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.ai_client._dashscope_call` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.tree b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.tree index 74097572..fcc203aa 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.tree +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItem.tree @@ -1,12 +1,195 @@ Metadata: FileItem |- kind: typealias |- memory_dim: curation -|- producers: [0] -|- consumers: [0] -|- access_pattern: mixed +|- producers: [117] +| |- src.ai_client._extract_dashscope_tool_calls (producer) +| |- src.api_hook_client.get_warmup_wait (producer) +| |- src.app_controller.wait (producer) +| |- src.ai_client._dashscope_call (producer) +| |- src.app_controller._pending_mma_spawn (producer) +| |- src.api_hook_client.wait_for_event (producer) +| |- src.api_hook_client.clear_events (producer) +| |- src.project_manager.get_all_tracks (producer) +| |- src.app_controller._offload_entry_payload (producer) +| |- src.ai_client._strip_private_keys (producer) +| |- src.app_controller._api_get_diagnostics (producer) +| |- src.app_controller.get_gui_state (producer) +| |- src.app_controller.load_config (producer) +| |- src.api_hook_client.get_warmup_status (producer) +| |- src.api_hook_client.get_project (producer) +| |- src.api_hook_client.get_mma_workers (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.reject_patch (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller._api_get_session (producer) +| |- src.ai_client._parse_tool_args_result (producer) +| |- src.app_controller._api_pending_actions (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.load_history (producer) +| |- src.app_controller.get_context (producer) +| |- src.ai_client._build_chunked_context_blocks (producer) +| |- src.ai_client._get_anthropic_tools (producer) +| |- src.api_hook_client.get_gui_state (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client._get_deepseek_tools (producer) +| |- src.models.parse_history_entries (producer) +| |- src.api_hook_client.get_events (producer) +| |- src.ai_client._pre_dispatch (producer) +| |- src.project_manager.str_to_entry (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_session (producer) +| |- src.app_controller.token_stats (producer) +| |- src.api_hook_client.get_io_pool_status (producer) +| |- src.api_hook_client.trigger_patch (producer) +| |- src.api_hook_client.get_gui_health (producer) +| |- src.ai_client.get_gemini_cache_stats (producer) +| |- src.app_controller._api_get_api_project (producer) +| |- src.api_hook_client.get_status (producer) +| |- src.app_controller._api_get_context (producer) +| |- src.app_controller._api_token_stats (producer) +| |- src.api_hook_client.get_context_state (producer) +| |- src.api_hook_client.set_value (producer) +| |- src.app_controller.get_mma_status (producer) +| |- src.api_hook_client.post_gui (producer) +| |- src.api_hook_client.get_gui_diagnostics (producer) +| |- src.app_controller._api_get_performance (producer) +| |- src.app_controller._api_get_api_session (producer) +| |- src.api_hook_client.get_mma_status (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.aggregate.build_file_items (producer) +| |- src.api_hook_client.get_startup_timeline (producer) +| |- src.api_hook_client.get_node_status (producer) +| |- src.api_hook_client.get_performance (producer) +| |- src.ai_client._load_credentials (producer) +| |- src.app_controller._api_get_gui_state (producer) +| |- src.project_manager.default_project (producer) +| |- src.api_hook_client.post_session (producer) +| |- src.app_controller.get_performance (producer) +| |- src.project_manager.migrate_from_legacy_config (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.push_event (producer) +| |- src.api_hook_client.get_warmup_canaries (producer) +| |- src.api_hook_client.drag (producer) +| |- src.app_controller.pending_actions (producer) +| |- src.ai_client.get_token_stats (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.status (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.apply_patch (producer) +| |- src.models._load_config_from_disk (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.app_controller._api_get_mma_status (producer) +| |- src.api_hook_client.get_patch_status (producer) +| |- src.app_controller.generate (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.get_api_project (producer) +| |- src.app_controller._api_status (producer) +| |- src.project_manager.flat_config (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client.ollama_chat (producer) +| |- src.api_hook_client.wait_for_project_switch (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.click (producer) +| |- src.ai_client.get_comms_log (producer) +| |- src.app_controller._api_generate (producer) +| |- src.api_hook_client.select_list_item (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_project_switch_status (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.load_project (producer) +| |- src.app_controller.get_session (producer) +| |- src.api_hook_client.get_system_telemetry (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client._make_request (producer) +| |- src.app_controller.get_diagnostics (producer) +| |- src.app_controller.get_session_insights (producer) +| |- src.ai_client._content_block_to_dict (producer) +| |- src.api_hook_client.select_tab (producer) +| |- src.app_controller._pending_mma_approval (producer) +| |- src.ai_client._add_bleed_derived (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.right_click (producer) +| |- src.app_controller.get_api_session (producer) +| |- src.project_manager.default_discussion (producer) +| |- src.ai_client._send_cli_round_result (producer) +| |- src.api_hook_client.get_financial_metrics (producer) +|- consumers: [66] +| |- src.ai_client._invalidate_token_estimate (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_from_items (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._create_gemini_cache_result (consumer) +| |- src.ai_client._send_grok (consumer) +| |- src.ai_client._strip_private_keys (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_gemini_cli (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_gemini (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_anthropic (consumer) +| |- src.project_manager.save_project (consumer) +| |- src.ai_client._trim_anthropic_history (consumer) +| |- src.ai_client._send_llama (consumer) +| |- src.aggregate.build_tier3_context (consumer) +| |- src.app_controller._offload_entry_payload (consumer) +| |- src.project_manager.format_discussion (consumer) +| |- src.project_manager.entry_to_str (consumer) +| |- src.ai_client._repair_minimax_history (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._strip_stale_file_refreshes (consumer) +| |- src.ai_client._send_deepseek (consumer) +| |- src.ai_client._add_bleed_derived (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_no_history (consumer) +| |- src.project_manager.flat_config (consumer) +| |- src.ai_client._send_llama_native (consumer) +| |- src.ai_client.ollama_chat (consumer) +| |- src.ai_client._send_qwen (consumer) +| |- src.app_controller._on_comms_entry (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._repair_deepseek_history (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._execute_single_tool_call_async (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._repair_anthropic_history (consumer) +| |- src.ai_client._strip_cache_controls (consumer) +| |- src.aggregate.run (consumer) +| |- src.models._save_config_to_disk (consumer) +| |- src.ai_client._dashscope_call (consumer) +| |- src.app_controller._start_track_logic_result (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._estimate_prompt_tokens (consumer) +| |- src.ai_client._append_comms (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._estimate_message_tokens (consumer) +| |- src.ai_client._add_history_cache_breakpoint (consumer) +| |- src.ai_client._pre_dispatch (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate._build_files_section_from_items (consumer) +| |- src.ai_client._trim_minimax_history (consumer) +| |- src.app_controller._refresh_api_metrics (consumer) +| |- src.app_controller._start_track_logic (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.project_manager.migrate_from_legacy_config (consumer) +| |- src.ai_client._send_minimax (consumer) +| |- src.ai_client.send (consumer) +|- access_pattern: whole_struct |- frequency: per_turn -|- result_coverage: 0 producers, 0 consumers -|- type_alias_coverage: 0 sites +|- result_coverage: 96 producers, 46 consumers +|- type_alias_coverage: 135 sites; 0 typed (0%); 135 untyped (100%) |- cross_audit_findings: 0 findings -|- decomposition_cost: insufficient_data (470 us) +|- decomposition_cost: hold (470 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.dsl index b967fb22..b7ce93a7 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.dsl +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.dsl @@ -7,33 +7,54 @@ \ === memory_dim === "curation" mem-dim -\ === producers (0 items) === +\ === producers (6 items) === + "src.gui_2._render_beads_tab_list_result" "src\gui_2.py" 8314 "producer" fn-ref + "src.gui_2._drain_normalize_errors" "src\gui_2.py" 7417 "producer" fn-ref + "src.ai_client._list_gemini_models_result" "src\ai_client.py" 1626 "producer" fn-ref + "src.ai_client._list_anthropic_models_result" "src\ai_client.py" 1317 "producer" fn-ref + "src.ai_client._list_minimax_models_result" "src\ai_client.py" 2436 "producer" fn-ref + "src.ai_client._set_minimax_provider_result" "src\ai_client.py" 398 "producer" fn-ref -\ === consumers (4 items) === - "src.ai_client._build_file_diff_text" "src\ai_client.py" 1105 "consumer" fn-ref - "src.ai_client.run_with_tool_loop" "src\ai_client.py" 833 "consumer" fn-ref +\ === consumers (9 items) === + "src.app_controller._symbol_resolution_result" "src\app_controller.py" 3506 "consumer" fn-ref + "src.app_controller._topological_sort_tickets_result" "src\app_controller.py" 4708 "consumer" fn-ref "src.ai_client._build_file_context_text" "src\ai_client.py" 1092 "consumer" fn-ref "src.ai_client._reread_file_items_result" "src\ai_client.py" 1056 "consumer" fn-ref + "src.ai_client._build_file_diff_text" "src\ai_client.py" 1105 "consumer" fn-ref + "src.gui_2.__init__" "src\gui_2.py" 7550 "consumer" fn-ref + "src.app_controller._serialize_tool_calls_result" "src\app_controller.py" 2217 "consumer" fn-ref + "src.project_manager.calculate_track_progress" "src\project_manager.py" 420 "consumer" fn-ref + "src.ai_client.run_with_tool_loop" "src\ai_client.py" 833 "consumer" fn-ref \ === access_pattern === "whole_struct" access-pattern -\ === access_pattern_evidence (4 items) === - "src.ai_client._build_file_diff_text" "whole_struct" 0 "low" ap-evidence - "src.ai_client.run_with_tool_loop" "whole_struct" 1 "high" ap-evidence +\ === access_pattern_evidence (9 items) === + "src.app_controller._symbol_resolution_result" "whole_struct" 0 "low" ap-evidence + "src.app_controller._topological_sort_tickets_result" "whole_struct" 1 "high" ap-evidence "src.ai_client._build_file_context_text" "whole_struct" 0 "low" ap-evidence "src.ai_client._reread_file_items_result" "whole_struct" 0 "low" ap-evidence + "src.ai_client._build_file_diff_text" "whole_struct" 0 "low" ap-evidence + "src.gui_2.__init__" "field_by_field" 3 "high" ap-evidence + "src.app_controller._serialize_tool_calls_result" "whole_struct" 0 "low" ap-evidence + "src.project_manager.calculate_track_progress" "whole_struct" 0 "low" ap-evidence + "src.ai_client.run_with_tool_loop" "whole_struct" 1 "high" ap-evidence \ === frequency === "per_turn" frequency -\ === frequency_evidence (0 items) === +\ === frequency_evidence (5 items) === + "src.gui_2._render_beads_tab_list_result" "per_turn" "static_analysis" "producer from src\gui_2.py" freq-evidence + "src.gui_2._drain_normalize_errors" "per_turn" "static_analysis" "producer from src\gui_2.py" freq-evidence + "src.ai_client._list_gemini_models_result" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.ai_client._list_anthropic_models_result" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.ai_client._list_minimax_models_result" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence \ === result_coverage === - 0 0 4 0 result-coverage + 6 6 9 0 result-coverage \ === type_alias_coverage === - 2 0 2 type-alias-coverage + 6 0 6 type-alias-coverage \ === cross_audit_findings === 5 cross-audit-findings diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.md b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.md index 6e438f52..325fd3b6 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.md +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.md @@ -6,96 +6,135 @@ ## Pipeline summary -- Producers: 0 -- Consumers: 4 -- Distinct producer fqnames: 0 -- Distinct consumer fqnames: 4 +- Producers: 6 +- Consumers: 9 +- Distinct producer fqnames: 6 +- Distinct consumer fqnames: 9 - Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn - Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (0) +## Producers (6) -_(none)_ +### `src\ai_client.py` (4 producers) -## Consumers (4) +- `src.ai_client._list_gemini_models_result` (line 1626) +- `src.ai_client._list_anthropic_models_result` (line 1317) +- `src.ai_client._list_minimax_models_result` (line 2436) +- `src.ai_client._set_minimax_provider_result` (line 398) + +### `src\gui_2.py` (2 producers) + +- `src.gui_2._render_beads_tab_list_result` (line 8314) +- `src.gui_2._drain_normalize_errors` (line 7417) + +## Consumers (9) ### `src\ai_client.py` (4 consumers) -- `src.ai_client._build_file_diff_text` (line 1105) -- `src.ai_client.run_with_tool_loop` (line 833) - `src.ai_client._build_file_context_text` (line 1092) - `src.ai_client._reread_file_items_result` (line 1056) +- `src.ai_client._build_file_diff_text` (line 1105) +- `src.ai_client.run_with_tool_loop` (line 833) + +### `src\app_controller.py` (3 consumers) + +- `src.app_controller._symbol_resolution_result` (line 3506) +- `src.app_controller._topological_sort_tickets_result` (line 4708) +- `src.app_controller._serialize_tool_calls_result` (line 2217) + +### `src\gui_2.py` (1 consumer) + +- `src.gui_2.__init__` (line 7550) + +### `src\project_manager.py` (1 consumer) + +- `src.project_manager.calculate_track_progress` (line 420) ## Field access matrix -| consumer | append | -|---|---| -| `_build_file_diff_text` | . | -| `run_with_tool_loop` | 2 | -| `_build_file_context_text` | . | -| `_reread_file_items_result` | . | +| consumer | _attr_name | _cached | _module_name | _report_worker_error | append | +|---|---|---|---|---|---| +| `_symbol_resolution_result` | . | . | . | . | . | +| `_topological_sort_tickets_result` | . | . | . | 1 | . | +| `_build_file_context_text` | . | . | . | . | . | +| `_reread_file_items_result` | . | . | . | . | . | +| `_build_file_diff_text` | . | . | . | . | . | +| `__init__` | 1 | 1 | 1 | . | . | +| `_serialize_tool_calls_result` | . | . | . | . | . | +| `calculate_track_progress` | . | . | . | . | . | +| `run_with_tool_loop` | . | . | . | . | 2 | ## Access pattern **Dominant pattern:** whole_struct -**Evidence count:** 4 +**Evidence count:** 9 **Per-function pattern distribution:** -- `whole_struct`: 4 functions (100%) +- `whole_struct`: 8 functions (89%) +- `field_by_field`: 1 functions (11%) ## SSDL Sketch for `FileItems` ``` [Q:FileItems entry-point] -> [Q:PCG lookup] - -> [1: _build_file_diff_text] [B:check] (branches=6) - -> [2: run_with_tool_loop] [B:is None?] (branches=23) [N:safe] + -> [1: _symbol_resolution_result] [B:check] (branches=4) + -> [2: _topological_sort_tickets_result] [B:check] (branches=2) -> [3: _build_file_context_text] [B:check] (branches=3) -> [4: _reread_file_items_result] [B:is None?] (branches=5) [N:safe] + -> [5: _build_file_diff_text] [B:check] (branches=6) + -> [6: __init__] [B:check] (branches=0) + -> [7: _serialize_tool_calls_result] [B:check] (branches=2) + -> [8: calculate_track_progress] [B:check] (branches=1) + -> [9: run_with_tool_loop] [B:is None?] (branches=23) [N:safe] -> [T:done] ``` -**Effective codepaths:** 8388712 (sum of 2^branches across 4 consumers) -**Total branch points:** 37 +**Effective codepaths:** 8388739 (sum of 2^branches across 9 consumers) +**Total branch points:** 46 **Nil-check functions:** 2 **Defusing opportunities:** - **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. - - Effective codepaths: 8388712 -> 8388708 -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `fileitems_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 2 field-check branches to 1 cache lookup. - - Effective codepaths: 8388712 -> 2 + - Effective codepaths: 8388739 -> 8388735 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `fileitems_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 6 field-check branches to 1 cache lookup. + - Effective codepaths: 8388739 -> 6 - **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. - - Effective codepaths: 8388712 -> 4 + - Effective codepaths: 8388739 -> 9 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 0 +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions ## Result coverage -**Summary:** 0 producers, 4 consumers +**Summary:** 6 producers, 9 consumers | metric | value | |---|---| -| total producers | 0 | -| result producers | 0 | -| total consumers | 4 | +| total producers | 6 | +| result producers | 6 | +| total consumers | 9 | | result consumers | 0 | ## Type alias coverage -**Summary:** 2 sites; 0 typed (0%); 2 untyped (100%) +**Summary:** 6 sites; 0 typed (0%); 6 untyped (100%) | metric | value | |---|---| -| total field-access sites | 2 | +| total field-access sites | 6 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 2 | +| untyped sites (wildcard) | 6 | ## Cross-audit findings @@ -113,7 +152,13 @@ _(no cross-audit findings mapped to this aggregate)_ ## Struct shape (inferred from producer returns) -_(no producers; cannot infer shape)_ +| field | access count | access pattern | +|---|---|---| +| `_report_worker_error` | 1 | used | +| `_module_name` | 1 | used | +| `_attr_name` | 1 | used | +| `_cached` | 1 | used | +| `append` | 1 | used | ## Optimization candidates @@ -129,7 +174,22 @@ FileItems: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5 | function | pattern | field_accesses | confidence | |---|---|---|---| -| `src.ai_client._build_file_diff_text` | `whole_struct` | | low | -| `src.ai_client.run_with_tool_loop` | `whole_struct` | `append`=2 | high | +| `src.app_controller._symbol_resolution_result` | `whole_struct` | | low | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | `_report_worker_error`=1 | high | | `src.ai_client._build_file_context_text` | `whole_struct` | | low | | `src.ai_client._reread_file_items_result` | `whole_struct` | | low | +| `src.ai_client._build_file_diff_text` | `whole_struct` | | low | +| `src.gui_2.__init__` | `field_by_field` | `_module_name`=1, `_attr_name`=1, `_cached`=1 | high | +| `src.app_controller._serialize_tool_calls_result` | `whole_struct` | | low | +| `src.project_manager.calculate_track_progress` | `whole_struct` | | low | +| `src.ai_client.run_with_tool_loop` | `whole_struct` | `append`=2 | high | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.gui_2._render_beads_tab_list_result` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.gui_2._drain_normalize_errors` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.ai_client._list_gemini_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.ai_client._list_anthropic_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.ai_client._list_minimax_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.tree b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.tree index d4deadd8..9920fb5b 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.tree +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/FileItems.tree @@ -1,16 +1,27 @@ Metadata: FileItems |- kind: typealias |- memory_dim: curation -|- producers: [0] -|- consumers: [4] -| |- src.ai_client._build_file_diff_text (consumer) -| |- src.ai_client.run_with_tool_loop (consumer) +|- producers: [6] +| |- src.gui_2._render_beads_tab_list_result (producer) +| |- src.gui_2._drain_normalize_errors (producer) +| |- src.ai_client._list_gemini_models_result (producer) +| |- src.ai_client._list_anthropic_models_result (producer) +| |- src.ai_client._list_minimax_models_result (producer) +| |- src.ai_client._set_minimax_provider_result (producer) +|- consumers: [9] +| |- src.app_controller._symbol_resolution_result (consumer) +| |- src.app_controller._topological_sort_tickets_result (consumer) | |- src.ai_client._build_file_context_text (consumer) | |- src.ai_client._reread_file_items_result (consumer) +| |- src.ai_client._build_file_diff_text (consumer) +| |- src.gui_2.__init__ (consumer) +| |- src.app_controller._serialize_tool_calls_result (consumer) +| |- src.project_manager.calculate_track_progress (consumer) +| |- src.ai_client.run_with_tool_loop (consumer) |- access_pattern: whole_struct |- frequency: per_turn -|- result_coverage: 0 producers, 4 consumers -|- type_alias_coverage: 2 sites; 0 typed (0%); 2 untyped (100%) +|- result_coverage: 6 producers, 9 consumers +|- type_alias_coverage: 6 sites; 0 typed (0%); 6 untyped (100%) |- cross_audit_findings: 0 findings |- decomposition_cost: hold (470 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/History.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/History.dsl index c06bbc37..d480af57 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/History.dsl +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/History.dsl @@ -7,31 +7,57 @@ \ === memory_dim === "discussion" mem-dim -\ === producers (0 items) === +\ === producers (7 items) === + "src.gui_2._render_beads_tab_list_result" "src\gui_2.py" 8314 "producer" fn-ref + "src.gui_2._drain_normalize_errors" "src\gui_2.py" 7417 "producer" fn-ref + "src.ai_client._list_gemini_models_result" "src\ai_client.py" 1626 "producer" fn-ref + "src.provider_state.get_all" "src\provider_state.py" 34 "producer" fn-ref + "src.ai_client._list_anthropic_models_result" "src\ai_client.py" 1317 "producer" fn-ref + "src.ai_client._list_minimax_models_result" "src\ai_client.py" 2436 "producer" fn-ref + "src.ai_client._set_minimax_provider_result" "src\ai_client.py" 398 "producer" fn-ref -\ === consumers (0 items) === +\ === consumers (7 items) === + "src.provider_state.append" "src\provider_state.py" 30 "consumer" fn-ref + "src.app_controller._symbol_resolution_result" "src\app_controller.py" 3506 "consumer" fn-ref + "src.app_controller._topological_sort_tickets_result" "src\app_controller.py" 4708 "consumer" fn-ref + "src.provider_state.replace_all" "src\provider_state.py" 38 "consumer" fn-ref + "src.gui_2.__init__" "src\gui_2.py" 7550 "consumer" fn-ref + "src.app_controller._serialize_tool_calls_result" "src\app_controller.py" 2217 "consumer" fn-ref + "src.project_manager.calculate_track_progress" "src\project_manager.py" 420 "consumer" fn-ref \ === access_pattern === - "mixed" access-pattern + "whole_struct" access-pattern -\ === access_pattern_evidence (0 items) === +\ === access_pattern_evidence (7 items) === + "src.provider_state.append" "mixed" 2 "high" ap-evidence + "src.app_controller._symbol_resolution_result" "whole_struct" 0 "low" ap-evidence + "src.app_controller._topological_sort_tickets_result" "whole_struct" 1 "high" ap-evidence + "src.provider_state.replace_all" "mixed" 2 "high" ap-evidence + "src.gui_2.__init__" "field_by_field" 3 "high" ap-evidence + "src.app_controller._serialize_tool_calls_result" "whole_struct" 0 "low" ap-evidence + "src.project_manager.calculate_track_progress" "whole_struct" 0 "low" ap-evidence \ === frequency === "per_turn" frequency -\ === frequency_evidence (0 items) === +\ === frequency_evidence (5 items) === + "src.gui_2._render_beads_tab_list_result" "per_turn" "static_analysis" "producer from src\gui_2.py" freq-evidence + "src.gui_2._drain_normalize_errors" "per_turn" "static_analysis" "producer from src\gui_2.py" freq-evidence + "src.ai_client._list_gemini_models_result" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.provider_state.get_all" "per_turn" "static_analysis" "producer from src\provider_state.py" freq-evidence + "src.ai_client._list_anthropic_models_result" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence \ === result_coverage === - 0 0 0 0 result-coverage + 7 7 7 0 result-coverage \ === type_alias_coverage === - 0 0 0 type-alias-coverage + 8 0 8 type-alias-coverage \ === cross_audit_findings === 5 cross-audit-findings \ === decomposition_cost === - 470 0 0 "insufficient_data" "History: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern." nil 5 true decomp-cost + 470 0 70 "hold" "History: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 5 true decomp-cost \ === optimization_candidates (0 items) === diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/History.md b/docs/reports/code_path_audit/2026-06-22/aggregates/History.md index 281307a7..d3949f81 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/History.md +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/History.md @@ -6,74 +6,130 @@ ## Pipeline summary -- Producers: 0 -- Consumers: 0 -- Distinct producer fqnames: 0 -- Distinct consumer fqnames: 0 -- Access pattern (aggregate): mixed +- Producers: 7 +- Consumers: 7 +- Distinct producer fqnames: 7 +- Distinct consumer fqnames: 7 +- Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data +- Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (0) +## Producers (7) -_(none)_ +### `src\ai_client.py` (4 producers) -## Consumers (0) +- `src.ai_client._list_gemini_models_result` (line 1626) +- `src.ai_client._list_anthropic_models_result` (line 1317) +- `src.ai_client._list_minimax_models_result` (line 2436) +- `src.ai_client._set_minimax_provider_result` (line 398) -_(none)_ +### `src\gui_2.py` (2 producers) + +- `src.gui_2._render_beads_tab_list_result` (line 8314) +- `src.gui_2._drain_normalize_errors` (line 7417) + +### `src\provider_state.py` (1 producer) + +- `src.provider_state.get_all` (line 34) + +## Consumers (7) + +### `src\app_controller.py` (3 consumers) + +- `src.app_controller._symbol_resolution_result` (line 3506) +- `src.app_controller._topological_sort_tickets_result` (line 4708) +- `src.app_controller._serialize_tool_calls_result` (line 2217) + +### `src\gui_2.py` (1 consumer) + +- `src.gui_2.__init__` (line 7550) + +### `src\project_manager.py` (1 consumer) + +- `src.project_manager.calculate_track_progress` (line 420) + +### `src\provider_state.py` (2 consumers) + +- `src.provider_state.append` (line 30) +- `src.provider_state.replace_all` (line 38) ## Field access matrix -_(no field accesses detected)_ +| consumer | _attr_name | _cached | _module_name | _report_worker_error | lock | messages | +|---|---|---|---|---|---|---| +| `append` | . | . | . | . | 1 | 1 | +| `_symbol_resolution_result` | . | . | . | . | . | . | +| `_topological_sort_tickets_result` | . | . | . | 1 | . | . | +| `replace_all` | . | . | . | . | 1 | 1 | +| `__init__` | 1 | 1 | 1 | . | . | . | +| `_serialize_tool_calls_result` | . | . | . | . | . | . | +| `calculate_track_progress` | . | . | . | . | . | . | ## Access pattern -**Dominant pattern:** mixed -**Evidence count:** 0 +**Dominant pattern:** whole_struct +**Evidence count:** 7 + +**Per-function pattern distribution:** + +- `whole_struct`: 4 functions (57%) +- `mixed`: 2 functions (29%) +- `field_by_field`: 1 functions (14%) ## SSDL Sketch for `History` ``` [Q:History entry-point] -> [Q:PCG lookup] + -> [1: append] [B:check] (branches=1) + -> [2: _symbol_resolution_result] [B:check] (branches=4) + -> [3: _topological_sort_tickets_result] [B:check] (branches=2) + -> [4: replace_all] [B:check] (branches=1) + -> [5: __init__] [B:check] (branches=0) + -> [6: _serialize_tool_calls_result] [B:check] (branches=2) + -> [7: calculate_track_progress] [B:check] (branches=1) -> [T:done] ``` -**Effective codepaths:** 0 (sum of 2^branches across 0 consumers) -**Total branch points:** 0 +**Effective codepaths:** 31 (sum of 2^branches across 7 consumers) +**Total branch points:** 11 **Nil-check functions:** 0 **Defusing opportunities:** -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `history_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. - - Effective codepaths: 0 -> 1 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `history_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 8 field-check branches to 1 cache lookup. + - Effective codepaths: 31 -> 8 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 0 +**Evidence count:** 5 + +**Per-function frequency distribution:** + +- `per_turn`: 5 functions ## Result coverage -**Summary:** 0 producers, 0 consumers +**Summary:** 7 producers, 7 consumers | metric | value | |---|---| -| total producers | 0 | -| result producers | 0 | -| total consumers | 0 | +| total producers | 7 | +| result producers | 7 | +| total consumers | 7 | | result consumers | 0 | ## Type alias coverage -**Summary:** 0 sites +**Summary:** 8 sites; 0 typed (0%); 8 untyped (100%) | metric | value | |---|---| -| total field-access sites | 0 | +| total field-access sites | 8 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 0 | +| untyped sites (wildcard) | 8 | ## Cross-audit findings @@ -83,15 +139,22 @@ _(no cross-audit findings mapped to this aggregate)_ **Current cost estimate:** 470 us/turn **Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** History: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** History: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. **Struct field count (estimated):** 5 **Struct frozen:** True ## Struct shape (inferred from producer returns) -_(no producers; cannot infer shape)_ +| field | access count | access pattern | +|---|---|---| +| `lock` | 2 | used | +| `messages` | 2 | used | +| `_report_worker_error` | 1 | used | +| `_module_name` | 1 | used | +| `_attr_name` | 1 | used | +| `_cached` | 1 | used | ## Optimization candidates @@ -99,6 +162,28 @@ _(no optimization candidates generated)_ ## Verdict -History: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +History: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix + +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.provider_state.append` | `mixed` | `lock`=1, `messages`=1 | high | +| `src.app_controller._symbol_resolution_result` | `whole_struct` | | low | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | `_report_worker_error`=1 | high | +| `src.provider_state.replace_all` | `mixed` | `lock`=1, `messages`=1 | high | +| `src.gui_2.__init__` | `field_by_field` | `_module_name`=1, `_attr_name`=1, `_cached`=1 | high | +| `src.app_controller._serialize_tool_calls_result` | `whole_struct` | | low | +| `src.project_manager.calculate_track_progress` | `whole_struct` | | low | + +### Frequency evidence + +| function | frequency | source | note | +|---|---|---|---| +| `src.gui_2._render_beads_tab_list_result` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.gui_2._drain_normalize_errors` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.ai_client._list_gemini_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.provider_state.get_all` | `per_turn` | `static_analysis` | producer from src\provider_state.py | +| `src.ai_client._list_anthropic_models_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/History.tree b/docs/reports/code_path_audit/2026-06-22/aggregates/History.tree index f936b87e..21a548af 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/History.tree +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/History.tree @@ -1,12 +1,26 @@ Metadata: History |- kind: typealias |- memory_dim: discussion -|- producers: [0] -|- consumers: [0] -|- access_pattern: mixed +|- producers: [7] +| |- src.gui_2._render_beads_tab_list_result (producer) +| |- src.gui_2._drain_normalize_errors (producer) +| |- src.ai_client._list_gemini_models_result (producer) +| |- src.provider_state.get_all (producer) +| |- src.ai_client._list_anthropic_models_result (producer) +| |- src.ai_client._list_minimax_models_result (producer) +| |- src.ai_client._set_minimax_provider_result (producer) +|- consumers: [7] +| |- src.provider_state.append (consumer) +| |- src.app_controller._symbol_resolution_result (consumer) +| |- src.app_controller._topological_sort_tickets_result (consumer) +| |- src.provider_state.replace_all (consumer) +| |- src.gui_2.__init__ (consumer) +| |- src.app_controller._serialize_tool_calls_result (consumer) +| |- src.project_manager.calculate_track_progress (consumer) +|- access_pattern: whole_struct |- frequency: per_turn -|- result_coverage: 0 producers, 0 consumers -|- type_alias_coverage: 0 sites +|- result_coverage: 7 producers, 7 consumers +|- type_alias_coverage: 8 sites; 0 typed (0%); 8 untyped (100%) |- cross_audit_findings: 0 findings -|- decomposition_cost: insufficient_data (470 us) +|- decomposition_cost: hold (470 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.dsl index 89ffb2bf..20efbb71 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.dsl +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.dsl @@ -7,37 +7,272 @@ \ === memory_dim === "discussion" mem-dim -\ === producers (1 items) === +\ === producers (118 items) === + "src.ai_client._extract_dashscope_tool_calls" "src\ai_client.py" 2754 "producer" fn-ref + "src.api_hook_client.get_warmup_wait" "src\api_hook_client.py" 332 "producer" fn-ref + "src.app_controller.wait" "src\app_controller.py" 5205 "producer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "producer" fn-ref + "src.app_controller._pending_mma_spawn" "src\app_controller.py" 2772 "producer" fn-ref + "src.api_hook_client.wait_for_event" "src\api_hook_client.py" 136 "producer" fn-ref + "src.api_hook_client.clear_events" "src\api_hook_client.py" 129 "producer" fn-ref + "src.project_manager.get_all_tracks" "src\project_manager.py" 342 "producer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "producer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "producer" fn-ref + "src.app_controller._api_get_diagnostics" "src\app_controller.py" 202 "producer" fn-ref + "src.app_controller.get_gui_state" "src\app_controller.py" 2829 "producer" fn-ref + "src.app_controller.load_config" "src\app_controller.py" 5142 "producer" fn-ref + "src.api_hook_client.get_warmup_status" "src\api_hook_client.py" 325 "producer" fn-ref + "src.api_hook_client.get_project" "src\api_hook_client.py" 367 "producer" fn-ref + "src.api_hook_client.get_mma_workers" "src\api_hook_client.py" 546 "producer" fn-ref + "src.models.to_dict" "src\models.py" 646 "producer" fn-ref + "src.api_hook_client.reject_patch" "src\api_hook_client.py" 288 "producer" fn-ref + "src.models.to_dict" "src\models.py" 406 "producer" fn-ref + "src.app_controller._api_get_session" "src\app_controller.py" 374 "producer" fn-ref + "src.ai_client._parse_tool_args_result" "src\ai_client.py" 741 "producer" fn-ref + "src.app_controller._api_pending_actions" "src\app_controller.py" 335 "producer" fn-ref + "src.models.to_dict" "src\models.py" 855 "producer" fn-ref + "src.project_manager.load_history" "src\project_manager.py" 209 "producer" fn-ref + "src.app_controller.get_context" "src\app_controller.py" 2892 "producer" fn-ref + "src.ai_client._build_chunked_context_blocks" "src\ai_client.py" 1281 "producer" fn-ref + "src.ai_client._get_anthropic_tools" "src\ai_client.py" 664 "producer" fn-ref + "src.api_hook_client.get_gui_state" "src\api_hook_client.py" 165 "producer" fn-ref + "src.models.to_dict" "src\models.py" 938 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1059 "producer" fn-ref + "src.ai_client._get_deepseek_tools" "src\ai_client.py" 1194 "producer" fn-ref + "src.models.parse_history_entries" "src\models.py" 214 "producer" fn-ref + "src.api_hook_client.get_events" "src\api_hook_client.py" 124 "producer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "producer" fn-ref + "src.project_manager.str_to_entry" "src\project_manager.py" 75 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 473 "producer" fn-ref + "src.models.to_dict" "src\models.py" 794 "producer" fn-ref + "src.api_hook_client.get_session" "src\api_hook_client.py" 502 "producer" fn-ref + "src.app_controller.token_stats" "src\app_controller.py" 2898 "producer" fn-ref + "src.api_hook_client.get_io_pool_status" "src\api_hook_client.py" 420 "producer" fn-ref + "src.api_hook_client.trigger_patch" "src\api_hook_client.py" 274 "producer" fn-ref + "src.api_hook_client.get_gui_health" "src\api_hook_client.py" 434 "producer" fn-ref + "src.ai_client.get_gemini_cache_stats" "src\ai_client.py" 1604 "producer" fn-ref + "src.app_controller._api_get_api_project" "src\app_controller.py" 188 "producer" fn-ref + "src.api_hook_client.get_status" "src\api_hook_client.py" 105 "producer" fn-ref + "src.app_controller._api_get_context" "src\app_controller.py" 398 "producer" fn-ref + "src.app_controller._api_token_stats" "src\app_controller.py" 417 "producer" fn-ref + "src.api_hook_client.get_context_state" "src\api_hook_client.py" 491 "producer" fn-ref + "src.api_hook_client.set_value" "src\api_hook_client.py" 212 "producer" fn-ref + "src.app_controller.get_mma_status" "src\app_controller.py" 2835 "producer" fn-ref + "src.api_hook_client.post_gui" "src\api_hook_client.py" 149 "producer" fn-ref + "src.api_hook_client.get_gui_diagnostics" "src\api_hook_client.py" 311 "producer" fn-ref + "src.app_controller._api_get_performance" "src\app_controller.py" 195 "producer" fn-ref + "src.app_controller._api_get_api_session" "src\app_controller.py" 170 "producer" fn-ref + "src.api_hook_client.get_mma_status" "src\api_hook_client.py" 539 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1000 "producer" fn-ref + "src.models.to_dict" "src\models.py" 672 "producer" fn-ref + "src.models.to_dict" "src\models.py" 355 "producer" fn-ref "src.provider_state.get_all" "src\provider_state.py" 34 "producer" fn-ref + "src.aggregate.build_file_items" "src\aggregate.py" 158 "producer" fn-ref + "src.api_hook_client.get_startup_timeline" "src\api_hook_client.py" 353 "producer" fn-ref + "src.api_hook_client.get_node_status" "src\api_hook_client.py" 532 "producer" fn-ref + "src.api_hook_client.get_performance" "src\api_hook_client.py" 318 "producer" fn-ref + "src.ai_client._load_credentials" "src\ai_client.py" 282 "producer" fn-ref + "src.app_controller._api_get_gui_state" "src\app_controller.py" 123 "producer" fn-ref + "src.project_manager.default_project" "src\project_manager.py" 123 "producer" fn-ref + "src.api_hook_client.post_session" "src\api_hook_client.py" 117 "producer" fn-ref + "src.app_controller.get_performance" "src\app_controller.py" 2856 "producer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "producer" fn-ref + "src.models.to_dict" "src\models.py" 486 "producer" fn-ref + "src.models.to_dict" "src\models.py" 913 "producer" fn-ref + "src.models.to_dict" "src\models.py" 596 "producer" fn-ref + "src.api_hook_client.push_event" "src\api_hook_client.py" 156 "producer" fn-ref + "src.api_hook_client.get_warmup_canaries" "src\api_hook_client.py" 342 "producer" fn-ref + "src.api_hook_client.drag" "src\api_hook_client.py" 230 "producer" fn-ref + "src.app_controller.pending_actions" "src\app_controller.py" 2874 "producer" fn-ref + "src.ai_client.get_token_stats" "src\ai_client.py" 3185 "producer" fn-ref + "src.models.to_dict" "src\models.py" 886 "producer" fn-ref + "src.app_controller.status" "src\app_controller.py" 2865 "producer" fn-ref + "src.models.to_dict" "src\models.py" 558 "producer" fn-ref + "src.api_hook_client.apply_patch" "src\api_hook_client.py" 281 "producer" fn-ref + "src.models._load_config_from_disk" "src\models.py" 186 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 470 "producer" fn-ref + "src.app_controller._api_get_mma_status" "src\app_controller.py" 144 "producer" fn-ref + "src.api_hook_client.get_patch_status" "src\api_hook_client.py" 295 "producer" fn-ref + "src.app_controller.generate" "src\app_controller.py" 2868 "producer" fn-ref + "src.models.to_dict" "src\models.py" 441 "producer" fn-ref + "src.app_controller.get_api_project" "src\app_controller.py" 2853 "producer" fn-ref + "src.app_controller._api_status" "src\app_controller.py" 209 "producer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1024 "producer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "producer" fn-ref + "src.api_hook_client.wait_for_project_switch" "src\api_hook_client.py" 389 "producer" fn-ref + "src.models.to_dict" "src\models.py" 971 "producer" fn-ref + "src.api_hook_client.click" "src\api_hook_client.py" 223 "producer" fn-ref + "src.ai_client.get_comms_log" "src\ai_client.py" 273 "producer" fn-ref + "src.app_controller._api_generate" "src\app_controller.py" 221 "producer" fn-ref + "src.api_hook_client.select_list_item" "src\api_hook_client.py" 256 "producer" fn-ref + "src.models.to_dict" "src\models.py" 288 "producer" fn-ref + "src.api_hook_client.get_project_switch_status" "src\api_hook_client.py" 374 "producer" fn-ref + "src.models.to_dict" "src\models.py" 737 "producer" fn-ref + "src.project_manager.load_project" "src\project_manager.py" 186 "producer" fn-ref + "src.app_controller.get_session" "src\app_controller.py" 2883 "producer" fn-ref + "src.api_hook_client.get_system_telemetry" "src\api_hook_client.py" 524 "producer" fn-ref + "src.models.to_dict" "src\models.py" 618 "producer" fn-ref + "src.api_hook_client._make_request" "src\api_hook_client.py" 65 "producer" fn-ref + "src.app_controller.get_diagnostics" "src\app_controller.py" 2862 "producer" fn-ref + "src.app_controller.get_session_insights" "src\app_controller.py" 3049 "producer" fn-ref + "src.ai_client._content_block_to_dict" "src\ai_client.py" 1200 "producer" fn-ref + "src.api_hook_client.select_tab" "src\api_hook_client.py" 263 "producer" fn-ref + "src.app_controller._pending_mma_approval" "src\app_controller.py" 2776 "producer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "producer" fn-ref + "src.models.to_dict" "src\models.py" 701 "producer" fn-ref + "src.api_hook_client.right_click" "src\api_hook_client.py" 237 "producer" fn-ref + "src.app_controller.get_api_session" "src\app_controller.py" 2847 "producer" fn-ref + "src.project_manager.default_discussion" "src\project_manager.py" 117 "producer" fn-ref + "src.ai_client._send_cli_round_result" "src\ai_client.py" 1746 "producer" fn-ref + "src.api_hook_client.get_financial_metrics" "src\api_hook_client.py" 520 "producer" fn-ref -\ === consumers (2 items) === +\ === consumers (68 items) === + "src.ai_client._invalidate_token_estimate" "src\ai_client.py" 1240 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 920 "consumer" fn-ref + "src.aggregate.build_markdown_from_items" "src\aggregate.py" 348 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 603 "consumer" fn-ref + "src.ai_client._create_gemini_cache_result" "src\ai_client.py" 1706 "consumer" fn-ref + "src.ai_client._send_grok" "src\ai_client.py" 2530 "consumer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 506 "consumer" fn-ref + "src.ai_client._send_gemini_cli" "src\ai_client.py" 2019 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 814 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 893 "consumer" fn-ref + "src.ai_client._send_gemini" "src\ai_client.py" 1802 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 378 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1038 "consumer" fn-ref + "src.ai_client._send_anthropic" "src\ai_client.py" 1405 "consumer" fn-ref + "src.project_manager.save_project" "src\project_manager.py" 229 "consumer" fn-ref + "src.ai_client._trim_anthropic_history" "src\ai_client.py" 1353 "consumer" fn-ref "src.provider_state.append" "src\provider_state.py" 30 "consumer" fn-ref + "src.ai_client._send_llama" "src\ai_client.py" 2858 "consumer" fn-ref + "src.aggregate.build_tier3_context" "src\aggregate.py" 382 "consumer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "consumer" fn-ref + "src.project_manager.format_discussion" "src\project_manager.py" 69 "consumer" fn-ref + "src.project_manager.entry_to_str" "src\project_manager.py" 49 "consumer" fn-ref + "src.ai_client._repair_minimax_history" "src\ai_client.py" 2462 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1007 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 747 "consumer" fn-ref + "src.ai_client._strip_stale_file_refreshes" "src\ai_client.py" 1253 "consumer" fn-ref + "src.ai_client._send_deepseek" "src\ai_client.py" 2165 "consumer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 683 "consumer" fn-ref + "src.aggregate.build_markdown_no_history" "src\aggregate.py" 366 "consumer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "consumer" fn-ref + "src.ai_client._send_llama_native" "src\ai_client.py" 2958 "consumer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "consumer" fn-ref + "src.ai_client._send_qwen" "src\ai_client.py" 2773 "consumer" fn-ref + "src.app_controller._on_comms_entry" "src\app_controller.py" 4282 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 712 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 866 "consumer" fn-ref + "src.ai_client._repair_deepseek_history" "src\ai_client.py" 2138 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 454 "consumer" fn-ref "src.provider_state.replace_all" "src\provider_state.py" 38 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 575 "consumer" fn-ref + "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 945 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 630 "consumer" fn-ref + "src.ai_client._repair_anthropic_history" "src\ai_client.py" 1381 "consumer" fn-ref + "src.ai_client._strip_cache_controls" "src\ai_client.py" 1291 "consumer" fn-ref + "src.aggregate.run" "src\aggregate.py" 479 "consumer" fn-ref + "src.models._save_config_to_disk" "src\models.py" 199 "consumer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "consumer" fn-ref + "src.app_controller._start_track_logic_result" "src\app_controller.py" 4728 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 949 "consumer" fn-ref + "src.ai_client._estimate_prompt_tokens" "src\ai_client.py" 1243 "consumer" fn-ref + "src.ai_client._append_comms" "src\ai_client.py" 257 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 982 "consumer" fn-ref + "src.ai_client._estimate_message_tokens" "src\ai_client.py" 1218 "consumer" fn-ref + "src.ai_client._add_history_cache_breakpoint" "src\ai_client.py" 1299 "consumer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 295 "consumer" fn-ref + "src.aggregate._build_files_section_from_items" "src\aggregate.py" 300 "consumer" fn-ref + "src.ai_client._trim_minimax_history" "src\ai_client.py" 2482 "consumer" fn-ref + "src.app_controller._refresh_api_metrics" "src\app_controller.py" 3074 "consumer" fn-ref + "src.app_controller._start_track_logic" "src\app_controller.py" 4721 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 416 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 656 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1072 "consumer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "consumer" fn-ref + "src.ai_client._send_minimax" "src\ai_client.py" 2616 "consumer" fn-ref + "src.ai_client.send" "src\ai_client.py" 3208 "consumer" fn-ref \ === access_pattern === - "mixed" access-pattern + "whole_struct" access-pattern -\ === access_pattern_evidence (2 items) === +\ === access_pattern_evidence (50 items) === + "src.ai_client._invalidate_token_estimate" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.aggregate.build_markdown_from_items" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._create_gemini_cache_result" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_grok" "whole_struct" 0 "low" ap-evidence + "src.ai_client._strip_private_keys" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_gemini_cli" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_gemini" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_anthropic" "whole_struct" 0 "low" ap-evidence + "src.project_manager.save_project" "mixed" 2 "high" ap-evidence + "src.ai_client._trim_anthropic_history" "whole_struct" 1 "high" ap-evidence "src.provider_state.append" "mixed" 2 "high" ap-evidence + "src.ai_client._send_llama" "whole_struct" 0 "low" ap-evidence + "src.aggregate.build_tier3_context" "whole_struct" 0 "low" ap-evidence + "src.app_controller._offload_entry_payload" "whole_struct" 0 "low" ap-evidence + "src.project_manager.format_discussion" "whole_struct" 0 "low" ap-evidence + "src.project_manager.entry_to_str" "whole_struct" 1 "high" ap-evidence + "src.ai_client._repair_minimax_history" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._strip_stale_file_refreshes" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_deepseek" "whole_struct" 0 "low" ap-evidence + "src.ai_client._add_bleed_derived" "field_by_field" 9 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.aggregate.build_markdown_no_history" "whole_struct" 0 "low" ap-evidence + "src.project_manager.flat_config" "whole_struct" 1 "high" ap-evidence + "src.ai_client._send_llama_native" "whole_struct" 0 "low" ap-evidence + "src.ai_client.ollama_chat" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_qwen" "whole_struct" 0 "low" ap-evidence + "src.app_controller._on_comms_entry" "field_by_field" 10 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._repair_deepseek_history" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence "src.provider_state.replace_all" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._execute_single_tool_call_async" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._repair_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._strip_cache_controls" "whole_struct" 0 "low" ap-evidence + "src.aggregate.run" "field_by_field" 3 "high" ap-evidence + "src.models._save_config_to_disk" "whole_struct" 0 "low" ap-evidence + "src.ai_client._dashscope_call" "whole_struct" 0 "low" ap-evidence + "src.app_controller._start_track_logic_result" "field_by_field" 17 "high" ap-evidence \ === frequency === "per_turn" frequency -\ === frequency_evidence (1 items) === - "src.provider_state.get_all" "per_turn" "static_analysis" "producer from src\provider_state.py" freq-evidence +\ === frequency_evidence (5 items) === + "src.ai_client._extract_dashscope_tool_calls" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.api_hook_client.get_warmup_wait" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence + "src.app_controller.wait" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence + "src.ai_client._dashscope_call" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.app_controller._pending_mma_spawn" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence \ === result_coverage === - 1 1 2 0 result-coverage + 97 97 48 0 result-coverage \ === type_alias_coverage === - 4 0 4 type-alias-coverage + 137 0 137 type-alias-coverage \ === cross_audit_findings === 5 cross-audit-findings \ === decomposition_cost === - 470 0 0 "insufficient_data" "HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern." nil 5 true decomp-cost + 470 0 70 "hold" "HistoryMessage: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 5 true decomp-cost \ === optimization_candidates (0 items) === diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.md b/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.md index 586f0bd5..ff98632d 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.md +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.md @@ -6,22 +6,238 @@ ## Pipeline summary -- Producers: 1 -- Consumers: 2 -- Distinct producer fqnames: 1 -- Distinct consumer fqnames: 2 -- Access pattern (aggregate): mixed +- Producers: 118 +- Consumers: 68 +- Distinct producer fqnames: 97 +- Distinct consumer fqnames: 48 +- Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data +- Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (1) +## Producers (118) + +### `src\aggregate.py` (1 producer) + +- `src.aggregate.build_file_items` (line 158) + +### `src\ai_client.py` (16 producers) + +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) + +### `src\api_hook_client.py` (39 producers) + +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\app_controller.py` (30 producers) + +- `src.app_controller.wait` (line 5205) +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.status` (line 2865) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_status` (line 209) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.get_api_session` (line 2847) + +### `src\models.py` (23 producers) + +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 938) +- `src.models.to_dict` (line 1059) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 1000) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 618) +- `src.models.to_dict` (line 701) + +### `src\project_manager.py` (8 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) ### `src\provider_state.py` (1 producer) - `src.provider_state.get_all` (line 34) -## Consumers (2) +## Consumers (68) + +### `src\aggregate.py` (5 consumers) + +- `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.run` (line 479) +- `src.aggregate._build_files_section_from_items` (line 300) + +### `src\ai_client.py` (29 consumers) + +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._estimate_message_tokens` (line 1218) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.send` (line 3208) + +### `src\app_controller.py` (5 consumers) + +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._on_comms_entry` (line 4282) +- `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._start_track_logic` (line 4721) + +### `src\models.py` (22 consumers) + +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 506) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 378) +- `src.models.from_dict` (line 1038) +- `src.models.from_dict` (line 1007) +- `src.models.from_dict` (line 747) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.from_dict` (line 866) +- `src.models.from_dict` (line 454) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 630) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 949) +- `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 1072) + +### `src\project_manager.py` (5 consumers) + +- `src.project_manager.save_project` (line 229) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.migrate_from_legacy_config` (line 253) ### `src\provider_state.py` (2 consumers) @@ -30,68 +246,190 @@ ## Field access matrix -| consumer | lock | messages | -|---|---|---| -| `append` | 1 | 1 | -| `replace_all` | 1 | 1 | +| consumer | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _token_history | _topological_sort_tickets_result | active_discussion | active_project_path | active_project_root | ai_status | append | config | content | context_files | discussion | encode | engines | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `append` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | 1 | 1 | 1 | . | . | 4 | 4 | 1 | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `replace_all` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | 2 | 2 | . | . | . | 1 | 1 | 1 | 1 | 4 | . | 1 | . | 1 | . | . | 1 | + +_... 25 more fields_ ## Access pattern -**Dominant pattern:** mixed -**Evidence count:** 2 +**Dominant pattern:** whole_struct +**Evidence count:** 50 **Per-function pattern distribution:** -- `mixed`: 2 functions (100%) +- `whole_struct`: 27 functions (54%) +- `mixed`: 19 functions (38%) +- `field_by_field`: 4 functions (8%) ## SSDL Sketch for `HistoryMessage` ``` [Q:HistoryMessage entry-point] -> [Q:PCG lookup] - -> [1: append] [B:check] (branches=1) - -> [2: replace_all] [B:check] (branches=1) + -> [1: _invalidate_token_estimate] [B:check] (branches=0) + -> [2: from_dict] [B:check] (branches=0) + -> [3: build_markdown_from_items] [B:check] (branches=9) + -> [4: from_dict] [B:check] (branches=0) + -> [5: _create_gemini_cache_result] [B:check] (branches=3) + -> [6: _send_grok] [B:check] (branches=14) + -> [7: _strip_private_keys] [B:check] (branches=0) + -> [8: from_dict] [B:check] (branches=0) + -> [9: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [10: from_dict] [B:check] (branches=0) + -> [11: from_dict] [B:check] (branches=0) + -> [12: _send_gemini] [B:is None?] (branches=75) [N:safe] + -> [13: from_dict] [B:check] (branches=0) + -> [14: from_dict] [B:check] (branches=0) + -> [15: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [16: save_project] [B:is None?] (branches=7) [N:safe] + -> [17: _trim_anthropic_history] [B:check] (branches=13) + -> [18: append] [B:check] (branches=1) + -> [19: _send_llama] [B:check] (branches=13) + -> [20: build_tier3_context] [B:check] (branches=50) + -> [21: _offload_entry_payload] [B:check] (branches=10) + -> [22: format_discussion] [B:check] (branches=0) + -> [23: entry_to_str] [B:check] (branches=3) + -> [24: _repair_minimax_history] [B:check] (branches=10) + -> [25: from_dict] [B:check] (branches=0) + -> [26: from_dict] [B:check] (branches=0) + -> [27: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [28: _send_deepseek] [B:check] (branches=71) + -> [29: _add_bleed_derived] [B:check] (branches=0) + -> [30: from_dict] [B:check] (branches=0) + -> [31: build_markdown_no_history] [B:check] (branches=0) + -> [32: flat_config] [B:check] (branches=2) + -> [33: _send_llama_native] [B:check] (branches=12) + -> [34: ollama_chat] [B:check] (branches=3) + -> [35: _send_qwen] [B:check] (branches=9) + -> [36: _on_comms_entry] [B:check] (branches=32) + -> [37: from_dict] [B:check] (branches=0) + -> [38: from_dict] [B:check] (branches=0) + -> [39: _repair_deepseek_history] [B:check] (branches=6) + -> [40: from_dict] [B:check] (branches=0) + -> [41: replace_all] [B:check] (branches=1) + -> [42: from_dict] [B:check] (branches=0) + -> [43: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [44: from_dict] [B:check] (branches=0) + -> [45: _repair_anthropic_history] [B:check] (branches=6) + -> [46: _strip_cache_controls] [B:check] (branches=4) + -> [47: run] [B:check] (branches=1) + -> [48: _save_config_to_disk] [B:check] (branches=1) + -> [49: _dashscope_call] [B:check] (branches=5) + -> [50: _start_track_logic_result] [B:check] (branches=10) + -> [51: from_dict] [B:check] (branches=0) + -> [52: _estimate_prompt_tokens] [B:check] (branches=2) + -> [53: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [54: from_dict] [B:check] (branches=0) + -> [55: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [56: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [57: _pre_dispatch] [B:check] (branches=8) + -> [58: from_dict] [B:check] (branches=0) + -> [59: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [60: _trim_minimax_history] [B:check] (branches=8) + -> [61: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [62: _start_track_logic] [B:check] (branches=1) + -> [63: from_dict] [B:check] (branches=0) + -> [64: from_dict] [B:check] (branches=0) + -> [65: from_dict] [B:check] (branches=0) + -> [66: migrate_from_legacy_config] [B:check] (branches=2) + -> [67: _send_minimax] [B:check] (branches=11) + -> [68: send] [B:check] (branches=19) -> [T:done] ``` -**Effective codepaths:** 4 (sum of 2^branches across 2 consumers) -**Total branch points:** 2 -**Nil-check functions:** 0 +**Effective codepaths:** 40140116231395706750394 (sum of 2^branches across 68 consumers) +**Total branch points:** 543 +**Nil-check functions:** 9 **Defusing opportunities:** -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `historymessage_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 4 field-check branches to 1 cache lookup. - - Effective codepaths: 4 -> 4 +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 40140116231395706750394 -> 40140116231395706750376 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `historymessage_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 137 field-check branches to 1 cache lookup. + - Effective codepaths: 40140116231395706750394 -> 137 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 40140116231395706750394 -> 68 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 1 +**Evidence count:** 5 **Per-function frequency distribution:** -- `per_turn`: 1 functions +- `per_turn`: 5 functions ## Result coverage -**Summary:** 1 producers, 2 consumers +**Summary:** 97 producers, 48 consumers | metric | value | |---|---| -| total producers | 1 | -| result producers | 1 | -| total consumers | 2 | +| total producers | 97 | +| result producers | 97 | +| total consumers | 48 | | result consumers | 0 | ## Type alias coverage -**Summary:** 4 sites; 0 typed (0%); 4 untyped (100%) +**Summary:** 137 sites; 0 typed (0%); 137 untyped (100%) | metric | value | |---|---| -| total field-access sites | 4 | +| total field-access sites | 137 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 4 | +| untyped sites (wildcard) | 137 | ## Cross-audit findings @@ -101,9 +439,9 @@ _(no cross-audit findings mapped to this aggregate)_ **Current cost estimate:** 470 us/turn **Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** HistoryMessage: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. **Struct field count (estimated):** 5 **Struct frozen:** True @@ -111,8 +449,51 @@ _(no cross-audit findings mapped to this aggregate)_ | field | access count | access pattern | |---|---|---| +| `content` | 15 | hot | +| `marker` | 15 | hot | +| `get` | 7 | hot | +| `append` | 3 | hot | +| `pop` | 2 | used | +| `files` | 2 | used | | `lock` | 2 | used | | `messages` | 2 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `estimated_prompt_tokens` | 1 | used | +| `max_prompt_tokens` | 1 | used | +| `utilization_pct` | 1 | used | +| `headroom` | 1 | used | +| `would_trim` | 1 | used | +| `sys_tokens` | 1 | used | +| `tool_tokens` | 1 | used | +| `history_tokens` | 1 | used | +| `local_ts` | 1 | used | +| `_offload_entry_payload` | 1 | used | +| `ui_auto_add_history` | 1 | used | +| `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `items` | 1 | used | +| `output` | 1 | used | +| `ai_status` | 1 | used | +| `context_files` | 1 | used | +| `_pending_gui_tasks_lock` | 1 | used | +| `_topological_sort_tickets_result` | 1 | used | +| `active_project_root` | 1 | used | +| `event_queue` | 1 | used | +| `engines` | 1 | used | +| `project` | 1 | used | +| `active_discussion` | 1 | used | +| `submit_io` | 1 | used | +| `tracks` | 1 | used | +| `config` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_pending_gui_tasks` | 1 | used | +| `mma_step_mode` | 1 | used | +| `active_project_path` | 1 | used | ## Optimization candidates @@ -120,7 +501,7 @@ _(no optimization candidates generated)_ ## Verdict -HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +HistoryMessage: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix @@ -128,11 +509,63 @@ HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, | function | pattern | field_accesses | confidence | |---|---|---|---| +| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | +| `src.ai_client._send_grok` | `whole_struct` | | low | +| `src.ai_client._strip_private_keys` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_anthropic` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | | `src.provider_state.append` | `mixed` | `lock`=1, `messages`=1 | high | +| `src.ai_client._send_llama` | `whole_struct` | | low | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | +| `src.ai_client._send_deepseek` | `whole_struct` | | low | +| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._send_qwen` | `whole_struct` | | low | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | | `src.provider_state.replace_all` | `mixed` | `lock`=1, `messages`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | +| `src.models._save_config_to_disk` | `whole_struct` | | low | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | ### Frequency evidence | function | frequency | source | note | |---|---|---|---| -| `src.provider_state.get_all` | `per_turn` | `static_analysis` | producer from src\provider_state.py | +| `src.ai_client._extract_dashscope_tool_calls` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller.wait` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.ai_client._dashscope_call` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.tree b/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.tree index 283213b8..e64624df 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.tree +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.tree @@ -1,15 +1,198 @@ Metadata: HistoryMessage |- kind: typealias |- memory_dim: discussion -|- producers: [1] +|- producers: [118] +| |- src.ai_client._extract_dashscope_tool_calls (producer) +| |- src.api_hook_client.get_warmup_wait (producer) +| |- src.app_controller.wait (producer) +| |- src.ai_client._dashscope_call (producer) +| |- src.app_controller._pending_mma_spawn (producer) +| |- src.api_hook_client.wait_for_event (producer) +| |- src.api_hook_client.clear_events (producer) +| |- src.project_manager.get_all_tracks (producer) +| |- src.app_controller._offload_entry_payload (producer) +| |- src.ai_client._strip_private_keys (producer) +| |- src.app_controller._api_get_diagnostics (producer) +| |- src.app_controller.get_gui_state (producer) +| |- src.app_controller.load_config (producer) +| |- src.api_hook_client.get_warmup_status (producer) +| |- src.api_hook_client.get_project (producer) +| |- src.api_hook_client.get_mma_workers (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.reject_patch (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller._api_get_session (producer) +| |- src.ai_client._parse_tool_args_result (producer) +| |- src.app_controller._api_pending_actions (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.load_history (producer) +| |- src.app_controller.get_context (producer) +| |- src.ai_client._build_chunked_context_blocks (producer) +| |- src.ai_client._get_anthropic_tools (producer) +| |- src.api_hook_client.get_gui_state (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client._get_deepseek_tools (producer) +| |- src.models.parse_history_entries (producer) +| |- src.api_hook_client.get_events (producer) +| |- src.ai_client._pre_dispatch (producer) +| |- src.project_manager.str_to_entry (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_session (producer) +| |- src.app_controller.token_stats (producer) +| |- src.api_hook_client.get_io_pool_status (producer) +| |- src.api_hook_client.trigger_patch (producer) +| |- src.api_hook_client.get_gui_health (producer) +| |- src.ai_client.get_gemini_cache_stats (producer) +| |- src.app_controller._api_get_api_project (producer) +| |- src.api_hook_client.get_status (producer) +| |- src.app_controller._api_get_context (producer) +| |- src.app_controller._api_token_stats (producer) +| |- src.api_hook_client.get_context_state (producer) +| |- src.api_hook_client.set_value (producer) +| |- src.app_controller.get_mma_status (producer) +| |- src.api_hook_client.post_gui (producer) +| |- src.api_hook_client.get_gui_diagnostics (producer) +| |- src.app_controller._api_get_performance (producer) +| |- src.app_controller._api_get_api_session (producer) +| |- src.api_hook_client.get_mma_status (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) | |- src.provider_state.get_all (producer) -|- consumers: [2] +| |- src.aggregate.build_file_items (producer) +| |- src.api_hook_client.get_startup_timeline (producer) +| |- src.api_hook_client.get_node_status (producer) +| |- src.api_hook_client.get_performance (producer) +| |- src.ai_client._load_credentials (producer) +| |- src.app_controller._api_get_gui_state (producer) +| |- src.project_manager.default_project (producer) +| |- src.api_hook_client.post_session (producer) +| |- src.app_controller.get_performance (producer) +| |- src.project_manager.migrate_from_legacy_config (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.push_event (producer) +| |- src.api_hook_client.get_warmup_canaries (producer) +| |- src.api_hook_client.drag (producer) +| |- src.app_controller.pending_actions (producer) +| |- src.ai_client.get_token_stats (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.status (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.apply_patch (producer) +| |- src.models._load_config_from_disk (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.app_controller._api_get_mma_status (producer) +| |- src.api_hook_client.get_patch_status (producer) +| |- src.app_controller.generate (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.get_api_project (producer) +| |- src.app_controller._api_status (producer) +| |- src.project_manager.flat_config (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client.ollama_chat (producer) +| |- src.api_hook_client.wait_for_project_switch (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.click (producer) +| |- src.ai_client.get_comms_log (producer) +| |- src.app_controller._api_generate (producer) +| |- src.api_hook_client.select_list_item (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_project_switch_status (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.load_project (producer) +| |- src.app_controller.get_session (producer) +| |- src.api_hook_client.get_system_telemetry (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client._make_request (producer) +| |- src.app_controller.get_diagnostics (producer) +| |- src.app_controller.get_session_insights (producer) +| |- src.ai_client._content_block_to_dict (producer) +| |- src.api_hook_client.select_tab (producer) +| |- src.app_controller._pending_mma_approval (producer) +| |- src.ai_client._add_bleed_derived (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.right_click (producer) +| |- src.app_controller.get_api_session (producer) +| |- src.project_manager.default_discussion (producer) +| |- src.ai_client._send_cli_round_result (producer) +| |- src.api_hook_client.get_financial_metrics (producer) +|- consumers: [68] +| |- src.ai_client._invalidate_token_estimate (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_from_items (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._create_gemini_cache_result (consumer) +| |- src.ai_client._send_grok (consumer) +| |- src.ai_client._strip_private_keys (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_gemini_cli (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_gemini (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_anthropic (consumer) +| |- src.project_manager.save_project (consumer) +| |- src.ai_client._trim_anthropic_history (consumer) | |- src.provider_state.append (consumer) +| |- src.ai_client._send_llama (consumer) +| |- src.aggregate.build_tier3_context (consumer) +| |- src.app_controller._offload_entry_payload (consumer) +| |- src.project_manager.format_discussion (consumer) +| |- src.project_manager.entry_to_str (consumer) +| |- src.ai_client._repair_minimax_history (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._strip_stale_file_refreshes (consumer) +| |- src.ai_client._send_deepseek (consumer) +| |- src.ai_client._add_bleed_derived (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_no_history (consumer) +| |- src.project_manager.flat_config (consumer) +| |- src.ai_client._send_llama_native (consumer) +| |- src.ai_client.ollama_chat (consumer) +| |- src.ai_client._send_qwen (consumer) +| |- src.app_controller._on_comms_entry (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._repair_deepseek_history (consumer) +| |- src.models.from_dict (consumer) | |- src.provider_state.replace_all (consumer) -|- access_pattern: mixed +| |- src.models.from_dict (consumer) +| |- src.ai_client._execute_single_tool_call_async (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._repair_anthropic_history (consumer) +| |- src.ai_client._strip_cache_controls (consumer) +| |- src.aggregate.run (consumer) +| |- src.models._save_config_to_disk (consumer) +| |- src.ai_client._dashscope_call (consumer) +| |- src.app_controller._start_track_logic_result (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._estimate_prompt_tokens (consumer) +| |- src.ai_client._append_comms (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._estimate_message_tokens (consumer) +| |- src.ai_client._add_history_cache_breakpoint (consumer) +| |- src.ai_client._pre_dispatch (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate._build_files_section_from_items (consumer) +| |- src.ai_client._trim_minimax_history (consumer) +| |- src.app_controller._refresh_api_metrics (consumer) +| |- src.app_controller._start_track_logic (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.project_manager.migrate_from_legacy_config (consumer) +| |- src.ai_client._send_minimax (consumer) +| |- src.ai_client.send (consumer) +|- access_pattern: whole_struct |- frequency: per_turn -|- result_coverage: 1 producers, 2 consumers -|- type_alias_coverage: 4 sites; 0 typed (0%); 4 untyped (100%) +|- result_coverage: 97 producers, 48 consumers +|- type_alias_coverage: 137 sites; 0 typed (0%); 137 untyped (100%) |- cross_audit_findings: 0 findings -|- decomposition_cost: insufficient_data (470 us) +|- decomposition_cost: hold (470 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.dsl index cdceb273..37a39467 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.dsl +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.dsl @@ -7,286 +7,1322 @@ \ === memory_dim === "discussion" mem-dim -\ === producers (117 items) === - "src.models.to_dict" "src\models.py" 441 "producer" fn-ref - "src.api_hook_client.get_gui_diagnostics" "src\api_hook_client.py" 311 "producer" fn-ref - "src.models.to_dict" "src\models.py" 1024 "producer" fn-ref - "src.app_controller._api_get_api_project" "src\app_controller.py" 188 "producer" fn-ref - "src.api_hook_client.clear_events" "src\api_hook_client.py" 129 "producer" fn-ref - "src.ai_client._build_chunked_context_blocks" "src\ai_client.py" 1281 "producer" fn-ref - "src.app_controller.get_api_project" "src\app_controller.py" 2853 "producer" fn-ref - "src.models.to_dict" "src\models.py" 737 "producer" fn-ref - "src.models.to_dict" "src\models.py" 618 "producer" fn-ref - "src.api_hook_client.get_mma_workers" "src\api_hook_client.py" 546 "producer" fn-ref - "src.models.to_dict" "src\models.py" 486 "producer" fn-ref - "src.api_hook_client.get_startup_timeline" "src\api_hook_client.py" 353 "producer" fn-ref - "src.models.to_dict" "src\models.py" 886 "producer" fn-ref - "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "producer" fn-ref - "src.app_controller.generate" "src\app_controller.py" 2868 "producer" fn-ref - "src.api_hook_client.get_session" "src\api_hook_client.py" 502 "producer" fn-ref - "src.api_hook_client.get_status" "src\api_hook_client.py" 105 "producer" fn-ref - "src.app_controller.token_stats" "src\app_controller.py" 2898 "producer" fn-ref - "src.project_manager.flat_config" "src\project_manager.py" 267 "producer" fn-ref - "src.api_hook_client._make_request" "src\api_hook_client.py" 65 "producer" fn-ref - "src.api_hook_client.right_click" "src\api_hook_client.py" 237 "producer" fn-ref - "src.ai_client._send_cli_round_result" "src\ai_client.py" 1746 "producer" fn-ref - "src.models.to_dict" "src\models.py" 971 "producer" fn-ref - "src.api_hook_client.trigger_patch" "src\api_hook_client.py" 274 "producer" fn-ref - "src.api_hook_client.select_tab" "src\api_hook_client.py" 263 "producer" fn-ref - "src.app_controller._api_get_session" "src\app_controller.py" 374 "producer" fn-ref - "src.project_manager.str_to_entry" "src\project_manager.py" 75 "producer" fn-ref - "src.app_controller._api_get_gui_state" "src\app_controller.py" 123 "producer" fn-ref - "src.api_hook_client.click" "src\api_hook_client.py" 223 "producer" fn-ref - "src.api_hook_client.get_gui_state" "src\api_hook_client.py" 165 "producer" fn-ref - "src.project_manager.default_discussion" "src\project_manager.py" 117 "producer" fn-ref - "src.ai_client._get_anthropic_tools" "src\ai_client.py" 664 "producer" fn-ref - "src.app_controller.load_config" "src\app_controller.py" 5142 "producer" fn-ref - "src.project_manager.load_project" "src\project_manager.py" 186 "producer" fn-ref - "src.api_hook_client.post_project" "src\api_hook_client.py" 473 "producer" fn-ref - "src.models.parse_history_entries" "src\models.py" 214 "producer" fn-ref - "src.ai_client.get_gemini_cache_stats" "src\ai_client.py" 1604 "producer" fn-ref - "src.app_controller.pending_actions" "src\app_controller.py" 2874 "producer" fn-ref - "src.app_controller._api_get_performance" "src\app_controller.py" 195 "producer" fn-ref - "src.ai_client._content_block_to_dict" "src\ai_client.py" 1200 "producer" fn-ref - "src.api_hook_client.get_patch_status" "src\api_hook_client.py" 295 "producer" fn-ref - "src.api_hook_client.push_event" "src\api_hook_client.py" 156 "producer" fn-ref - "src.models.to_dict" "src\models.py" 646 "producer" fn-ref - "src.api_hook_client.reject_patch" "src\api_hook_client.py" 288 "producer" fn-ref - "src.api_hook_client.get_project" "src\api_hook_client.py" 367 "producer" fn-ref - "src.models.to_dict" "src\models.py" 406 "producer" fn-ref - "src.app_controller._api_get_context" "src\app_controller.py" 398 "producer" fn-ref - "src.app_controller.status" "src\app_controller.py" 2865 "producer" fn-ref - "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "producer" fn-ref - "src.api_hook_client.get_performance" "src\api_hook_client.py" 318 "producer" fn-ref - "src.models.to_dict" "src\models.py" 701 "producer" fn-ref - "src.models.to_dict" "src\models.py" 672 "producer" fn-ref - "src.models.to_dict" "src\models.py" 355 "producer" fn-ref - "src.api_hook_client.select_list_item" "src\api_hook_client.py" 256 "producer" fn-ref - "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "producer" fn-ref - "src.api_hook_client.get_warmup_status" "src\api_hook_client.py" 325 "producer" fn-ref - "src.models.to_dict" "src\models.py" 1059 "producer" fn-ref - "src.app_controller._api_generate" "src\app_controller.py" 221 "producer" fn-ref - "src.project_manager.get_all_tracks" "src\project_manager.py" 342 "producer" fn-ref - "src.app_controller._api_status" "src\app_controller.py" 209 "producer" fn-ref - "src.app_controller._api_token_stats" "src\app_controller.py" 417 "producer" fn-ref - "src.api_hook_client.get_project_switch_status" "src\api_hook_client.py" 374 "producer" fn-ref - "src.app_controller._api_get_api_session" "src\app_controller.py" 170 "producer" fn-ref - "src.api_hook_client.post_session" "src\api_hook_client.py" 117 "producer" fn-ref - "src.api_hook_client.get_system_telemetry" "src\api_hook_client.py" 524 "producer" fn-ref - "src.ai_client._parse_tool_args_result" "src\ai_client.py" 741 "producer" fn-ref - "src.api_hook_client.wait_for_project_switch" "src\api_hook_client.py" 389 "producer" fn-ref - "src.api_hook_client.get_events" "src\api_hook_client.py" 124 "producer" fn-ref - "src.app_controller.get_context" "src\app_controller.py" 2892 "producer" fn-ref - "src.ai_client._extract_dashscope_tool_calls" "src\ai_client.py" 2754 "producer" fn-ref - "src.api_hook_client.get_gui_health" "src\api_hook_client.py" 434 "producer" fn-ref - "src.models.to_dict" "src\models.py" 794 "producer" fn-ref - "src.ai_client.get_comms_log" "src\ai_client.py" 273 "producer" fn-ref - "src.project_manager.default_project" "src\project_manager.py" 123 "producer" fn-ref - "src.api_hook_client.apply_patch" "src\api_hook_client.py" 281 "producer" fn-ref +\ === producers (483 items) === + "src.gui_2._populate_auto_slices_file_read_result" "src\gui_2.py" 7956 "producer" fn-ref + "src.ai_client._try_warm_sdk_result" "src\ai_client.py" 298 "producer" fn-ref "src.api_hook_client.get_warmup_wait" "src\api_hook_client.py" 332 "producer" fn-ref - "src.api_hook_client.get_warmup_canaries" "src\api_hook_client.py" 342 "producer" fn-ref - "src.api_hook_client.get_financial_metrics" "src\api_hook_client.py" 520 "producer" fn-ref - "src.models._load_config_from_disk" "src\models.py" 186 "producer" fn-ref - "src.ai_client.get_token_stats" "src\ai_client.py" 3185 "producer" fn-ref - "src.aggregate.build_file_items" "src\aggregate.py" 158 "producer" fn-ref - "src.app_controller.get_session_insights" "src\app_controller.py" 3049 "producer" fn-ref - "src.api_hook_client.post_gui" "src\api_hook_client.py" 149 "producer" fn-ref - "src.models.to_dict" "src\models.py" 855 "producer" fn-ref - "src.app_controller._pending_mma_approval" "src\app_controller.py" 2776 "producer" fn-ref - "src.api_hook_client.drag" "src\api_hook_client.py" 230 "producer" fn-ref - "src.api_hook_client.post_project" "src\api_hook_client.py" 470 "producer" fn-ref - "src.app_controller.wait" "src\app_controller.py" 5205 "producer" fn-ref - "src.app_controller.get_session" "src\app_controller.py" 2883 "producer" fn-ref - "src.app_controller._api_get_mma_status" "src\app_controller.py" 144 "producer" fn-ref - "src.app_controller._api_pending_actions" "src\app_controller.py" 335 "producer" fn-ref - "src.api_hook_client.get_node_status" "src\api_hook_client.py" 532 "producer" fn-ref - "src.api_hook_client.get_io_pool_status" "src\api_hook_client.py" 420 "producer" fn-ref - "src.app_controller.get_mma_status" "src\app_controller.py" 2835 "producer" fn-ref - "src.models.to_dict" "src\models.py" 1000 "producer" fn-ref - "src.models.to_dict" "src\models.py" 938 "producer" fn-ref "src.app_controller._pending_mma_spawn" "src\app_controller.py" 2772 "producer" fn-ref - "src.app_controller.get_performance" "src\app_controller.py" 2856 "producer" fn-ref - "src.api_hook_client.wait_for_event" "src\api_hook_client.py" 136 "producer" fn-ref - "src.api_hook_client.get_context_state" "src\api_hook_client.py" 491 "producer" fn-ref - "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "producer" fn-ref - "src.app_controller.get_diagnostics" "src\app_controller.py" 2862 "producer" fn-ref - "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "producer" fn-ref - "src.models.to_dict" "src\models.py" 288 "producer" fn-ref - "src.ai_client._load_credentials" "src\ai_client.py" 282 "producer" fn-ref - "src.app_controller._api_get_diagnostics" "src\app_controller.py" 202 "producer" fn-ref - "src.models.to_dict" "src\models.py" 913 "producer" fn-ref - "src.models.to_dict" "src\models.py" 596 "producer" fn-ref - "src.ai_client._get_deepseek_tools" "src\ai_client.py" 1194 "producer" fn-ref - "src.app_controller.get_api_session" "src\app_controller.py" 2847 "producer" fn-ref - "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "producer" fn-ref - "src.models.to_dict" "src\models.py" 558 "producer" fn-ref - "src.api_hook_client.get_mma_status" "src\api_hook_client.py" 539 "producer" fn-ref - "src.api_hook_client.set_value" "src\api_hook_client.py" 212 "producer" fn-ref + "src.summarize._summarise_generic" "src\summarize.py" 121 "producer" fn-ref + "src.code_path_audit_ssdl.render_ssdl_sketch" "src\code_path_audit_ssdl.py" 175 "producer" fn-ref + "src.code_path_audit.generate_rationale" "src\code_path_audit.py" 606 "producer" fn-ref + "src.file_cache.get_curated_view" "src\file_cache.py" 291 "producer" fn-ref + "src.project_manager.get_all_tracks" "src\project_manager.py" 342 "producer" fn-ref + "src.summarize.summarise_items" "src\summarize.py" 194 "producer" fn-ref + "src.theme_2.get_palette_names" "src\theme_2.py" 291 "producer" fn-ref + "src.log_registry.get_old_non_whitelisted_sessions" "src\log_registry.py" 390 "producer" fn-ref + "src.app_controller._api_post_api_session" "src\app_controller.py" 178 "producer" fn-ref + "src.code_path_audit_ssdl.suggest_defusing_technique" "src\code_path_audit_ssdl.py" 128 "producer" fn-ref + "src.app_controller.load_config" "src\app_controller.py" 5142 "producer" fn-ref + "src.theme_models.load_themes_from_dir" "src\theme_models.py" 181 "producer" fn-ref + "src.ai_client._list_llama_models" "src\ai_client.py" 3024 "producer" fn-ref "src.project_manager.load_history" "src\project_manager.py" 209 "producer" fn-ref + "src.project_manager.load_track_history" "src\project_manager.py" 314 "producer" fn-ref + "src.ai_client._get_gemini_history_list" "src\ai_client.py" 1795 "producer" fn-ref + "src.mcp_client.py_find_usages" "src\mcp_client.py" 1431 "producer" fn-ref + "src.mcp_client.ts_c_update_definition_result" "src\mcp_client.py" 496 "producer" fn-ref + "src.beads_client._read_beads" "src\beads_client.py" 77 "producer" fn-ref + "src.mcp_tool_specs.tool_names" "src\mcp_tool_specs.py" 77 "producer" fn-ref + "src.tool_presets._read_raw" "src\tool_presets.py" 28 "producer" fn-ref + "src.app_controller.post_gui" "src\app_controller.py" 2841 "producer" fn-ref + "src.mcp_client.get_file_summary" "src\mcp_client.py" 1093 "producer" fn-ref + "src.ai_client._get_deepseek_tools" "src\ai_client.py" 1194 "producer" fn-ref + "src.aggregate.run" "src\aggregate.py" 479 "producer" fn-ref + "src.gui_2.ui_message" "src\gui_2.py" 7544 "producer" fn-ref + "src.file_cache.update_definition" "src\file_cache.py" 790 "producer" fn-ref + "src.aggregate.build_markdown_from_items" "src\aggregate.py" 348 "producer" fn-ref + "src.api_hook_client.get_session" "src\api_hook_client.py" 502 "producer" fn-ref + "src.theme_2.get_syntax_palette_for_theme" "src\theme_2.py" 351 "producer" fn-ref + "src.mcp_client.py_get_skeleton_result" "src\mcp_client.py" 595 "producer" fn-ref + "src.mcp_client.ts_c_get_definition_result" "src\mcp_client.py" 466 "producer" fn-ref + "src.app_controller.token_stats" "src\app_controller.py" 2898 "producer" fn-ref + "src.api_hook_client.trigger_patch" "src\api_hook_client.py" 274 "producer" fn-ref + "src.mcp_client._ast_get_signature" "src\mcp_client.py" 428 "producer" fn-ref + "src.app_controller._api_get_api_project" "src\app_controller.py" 188 "producer" fn-ref + "src.mcp_client.get_tree" "src\mcp_client.py" 1505 "producer" fn-ref + "src.project_manager.calculate_track_progress" "src\project_manager.py" 420 "producer" fn-ref + "src.warmup.status" "src\warmup.py" 120 "producer" fn-ref + "src.app_controller._api_token_stats" "src\app_controller.py" 417 "producer" fn-ref + "src.mcp_client.py_set_signature" "src\mcp_client.py" 1383 "producer" fn-ref + "src.api_hook_client.get_gui_diagnostics" "src\api_hook_client.py" 311 "producer" fn-ref + "src.app_controller._api_get_api_session" "src\app_controller.py" 170 "producer" fn-ref + "src.mcp_client.ts_cpp_get_skeleton" "src\mcp_client.py" 1217 "producer" fn-ref + "src.models.to_dict" "src\models.py" 355 "producer" fn-ref + "src.markdown_helper.detect_language" "src\markdown_helper.py" 378 "producer" fn-ref + "src.gui_2.askdirectory" "src\gui_2.py" 90 "producer" fn-ref + "src.mcp_client.get_file_summary_result" "src\mcp_client.py" 340 "producer" fn-ref + "src.aggregate.build_file_items" "src\aggregate.py" 158 "producer" fn-ref + "src.api_hook_client.get_performance" "src\api_hook_client.py" 318 "producer" fn-ref + "src.ai_client._load_credentials" "src\ai_client.py" 282 "producer" fn-ref + "src.file_cache.get_file_id" "src\file_cache.py" 895 "producer" fn-ref + "src.startup_profiler.snapshot" "src\startup_profiler.py" 64 "producer" fn-ref + "src.gui_2.__getattr__" "src\gui_2.py" 742 "producer" fn-ref + "src.aggregate.build_beads_section" "src\aggregate.py" 327 "producer" fn-ref + "src.gui_2._capture_workspace_profile_ini_result" "src\gui_2.py" 8398 "producer" fn-ref + "src.outline_tool.get_outline" "src\outline_tool.py" 127 "producer" fn-ref + "src.gui_2._render_context_batch_actions_preview_result" "src\gui_2.py" 8167 "producer" fn-ref + "src.api_hook_client.approve_mma_ticket" "src\api_hook_client.py" 583 "producer" fn-ref + "src.app_controller._confirm_and_run" "src\app_controller.py" 4402 "producer" fn-ref + "src.ai_client._send_gemini" "src\ai_client.py" 1802 "producer" fn-ref + "src.app_controller.current_model" "src\app_controller.py" 2796 "producer" fn-ref + "src.ai_client.run_tier4_analysis" "src\ai_client.py" 3082 "producer" fn-ref + "src.app_controller.rag_source" "src\app_controller.py" 1676 "producer" fn-ref + "src.shell_runner._build_subprocess_env" "src\shell_runner.py" 43 "producer" fn-ref + "src.app_controller._api_health" "src\app_controller.py" 116 "producer" fn-ref + "src.api_hooks._get_app_attr" "src\api_hooks.py" 56 "producer" fn-ref + "src.ai_client._send_llama_native" "src\ai_client.py" 2958 "producer" fn-ref + "src.app_controller.current_provider" "src\app_controller.py" 2780 "producer" fn-ref + "src.summary_cache.get_stats" "src\summary_cache.py" 102 "producer" fn-ref + "src.ai_client._list_deepseek_models" "src\ai_client.py" 2135 "producer" fn-ref + "src.app_controller._api_status" "src\app_controller.py" 209 "producer" fn-ref "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "producer" fn-ref + "src.mcp_client.dispatch" "src\mcp_client.py" 1772 "producer" fn-ref + "src.openai_schemas.to_legacy_dict" "src\openai_schemas.py" 80 "producer" fn-ref + "src.session_logger.log_tool_call" "src\session_logger.py" 166 "producer" fn-ref + "src.gui_2._render_ast_inspector_outline_result" "src\gui_2.py" 7863 "producer" fn-ref + "src.shell_runner._load_env_config" "src\shell_runner.py" 27 "producer" fn-ref + "src.models.to_dict" "src\models.py" 737 "producer" fn-ref + "src.ai_client.send" "src\ai_client.py" 3208 "producer" fn-ref + "src.api_hook_client.get_system_telemetry" "src\api_hook_client.py" 524 "producer" fn-ref + "src.mcp_client.ts_cpp_get_code_outline" "src\mcp_client.py" 1231 "producer" fn-ref + "src.mcp_client.py_update_definition_result" "src\mcp_client.py" 663 "producer" fn-ref + "src.tool_bias.generate_tooling_strategy" "src\tool_bias.py" 43 "producer" fn-ref + "src.theme_2.get_current_font_path" "src\theme_2.py" 123 "producer" fn-ref + "src.result_types.ui_message" "src\result_types.py" 27 "producer" fn-ref + "src.mcp_client.read_file" "src\mcp_client.py" 203 "producer" fn-ref + "src.mcp_client._build_tree" "src\mcp_client.py" 1002 "producer" fn-ref + "src.ai_client._ensure_llama_client" "src\ai_client.py" 2844 "producer" fn-ref + "src.mcp_client.py_get_signature_result" "src\mcp_client.py" 684 "producer" fn-ref + "src.gui_2._resolve_font_path_result" "src\gui_2.py" 227 "producer" fn-ref + "src.gui_2._diag_layout_state_ini_text_result" "src\gui_2.py" 8373 "producer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "producer" fn-ref + "src.mcp_client._ast_update_definition" "src\mcp_client.py" 432 "producer" fn-ref + "src.ai_client._send_cli_round_result" "src\ai_client.py" 1746 "producer" fn-ref + "src.module_loader._require_warmed" "src\module_loader.py" 35 "producer" fn-ref + "src.code_path_audit._extract_type_name" "src\code_path_audit.py" 172 "producer" fn-ref + "src.performance_monitor.get_metrics" "src\performance_monitor.py" 233 "producer" fn-ref + "src.ai_client._extract_dashscope_tool_calls" "src\ai_client.py" 2754 "producer" fn-ref + "src.mcp_client.fetch_url_result" "src\mcp_client.py" 1043 "producer" fn-ref + "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 945 "producer" fn-ref + "src.gui_2.missing_files" "src\gui_2.py" 806 "producer" fn-ref + "src.events.to_dict" "src\events.py" 166 "producer" fn-ref + "src.app_controller.startup_timeline" "src\app_controller.py" 1435 "producer" fn-ref + "src.aggregate._build_files_section_from_items" "src\aggregate.py" 300 "producer" fn-ref + "src.ai_client.list_models" "src\ai_client.py" 506 "producer" fn-ref + "src.ai_client._run_script" "src\ai_client.py" 1038 "producer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "producer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "producer" fn-ref + "src.mcp_client.get_git_diff_result" "src\mcp_client.py" 397 "producer" fn-ref + "src.app_controller.warmup_status" "src\app_controller.py" 2593 "producer" fn-ref + "src.mcp_client.ts_cpp_update_definition_result" "src\mcp_client.py" 576 "producer" fn-ref + "src.api_hook_client.pause_mma_pipeline" "src\api_hook_client.py" 565 "producer" fn-ref + "src.mcp_client.ts_cpp_update_definition" "src\mcp_client.py" 1269 "producer" fn-ref + "src.api_hook_client.reject_patch" "src\api_hook_client.py" 288 "producer" fn-ref + "src.session_logger._now_ts" "src\session_logger.py" 57 "producer" fn-ref + "src.ai_client._parse_tool_args_result" "src\ai_client.py" 741 "producer" fn-ref + "src.gui_2._render_warmup_status_indicator_result" "src\gui_2.py" 7732 "producer" fn-ref + "src.workspace_manager.load_all_profiles" "src\workspace_manager.py" 30 "producer" fn-ref + "src.models.to_dict" "src\models.py" 855 "producer" fn-ref + "src.aggregate.group_files_by_dir" "src\aggregate.py" 86 "producer" fn-ref + "src.ai_client.run_tier4_patch_generation" "src\ai_client.py" 3157 "producer" fn-ref + "src.ai_client._build_chunked_context_blocks" "src\ai_client.py" 1281 "producer" fn-ref + "src.mcp_client.async_dispatch" "src\mcp_client.py" 1752 "producer" fn-ref + "src.code_path_audit_cross_audit._normalize_path" "src\code_path_audit_cross_audit.py" 66 "producer" fn-ref + "src.orchestrator_pm.generate_tracks" "src\orchestrator_pm.py" 58 "producer" fn-ref + "src.mcp_client.py_get_definition_result" "src\mcp_client.py" 646 "producer" fn-ref + "src.mcp_client.list_directory_result" "src\mcp_client.py" 256 "producer" fn-ref + "src.mcp_client.ts_cpp_get_skeleton_result" "src\mcp_client.py" 515 "producer" fn-ref + "src.mcp_tool_specs.to_dict" "src\mcp_tool_specs.py" 33 "producer" fn-ref + "src.code_path_audit_cross_audit.map_finding_to_aggregates" "src\code_path_audit_cross_audit.py" 71 "producer" fn-ref + "src.app_controller._get_discussion_names" "src\app_controller.py" 3741 "producer" fn-ref + "src.mcp_client.py_get_imports" "src\mcp_client.py" 1443 "producer" fn-ref + "src.synthesis_formatter.format_takes_diff" "src\synthesis_formatter.py" 1 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1059 "producer" fn-ref + "src.mcp_client.search_files" "src\mcp_client.py" 177 "producer" fn-ref + "src.dag_engine.topological_sort" "src\dag_engine.py" 130 "producer" fn-ref + "src.code_path_audit_ssdl.render_organization_deductions" "src\code_path_audit_ssdl.py" 259 "producer" fn-ref + "src.mcp_client.py_get_var_declaration_result" "src\mcp_client.py" 767 "producer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "producer" fn-ref + "src.fuzzy_anchor.get_context" "src\fuzzy_anchor.py" 9 "producer" fn-ref + "src.mcp_client.read_file_result" "src\mcp_client.py" 239 "producer" fn-ref + "src.mcp_client.derive_code_path" "src\mcp_client.py" 1491 "producer" fn-ref + "src.ai_client._get_context_marker" "src\ai_client.py" 218 "producer" fn-ref + "src.mcp_client.ts_cpp_get_signature_result" "src\mcp_client.py" 561 "producer" fn-ref + "src.shell_runner.run_powershell" "src\shell_runner.py" 58 "producer" fn-ref + "src.code_path_audit_cross_audit.aggregate_findings" "src\code_path_audit_cross_audit.py" 93 "producer" fn-ref + "src.ai_client._send_minimax" "src\ai_client.py" 2616 "producer" fn-ref + "src.code_path_audit_analysis._field_names_for_aggregate" "src\code_path_audit_analysis.py" 32 "producer" fn-ref + "src.summarize.build_summary_markdown" "src\summarize.py" 212 "producer" fn-ref + "src.markdown_helper._normalize_bullet_delimiters" "src\markdown_helper.py" 215 "producer" fn-ref + "src.app_controller._api_post_gui" "src\app_controller.py" 162 "producer" fn-ref + "src.mcp_client.py_get_symbol_info" "src\mcp_client.py" 1335 "producer" fn-ref + "src.app_controller._api_confirm_action" "src\app_controller.py" 346 "producer" fn-ref + "src.warmup.canaries" "src\warmup.py" 128 "producer" fn-ref + "src.mcp_client.py_get_hierarchy" "src\mcp_client.py" 1467 "producer" fn-ref + "src.ai_client.get_gemini_cache_stats" "src\ai_client.py" 1604 "producer" fn-ref + "src.api_hook_client.mutate_mma_dag" "src\api_hook_client.py" 576 "producer" fn-ref + "src.models.provider" "src\models.py" 770 "producer" fn-ref + "src.ai_client._send_llama" "src\ai_client.py" 2858 "producer" fn-ref + "src.api_hook_client.get_context_state" "src\api_hook_client.py" 491 "producer" fn-ref + "src.aggregate.build_discussion_text" "src\aggregate.py" 373 "producer" fn-ref + "src.mcp_client.py_set_signature_result" "src\mcp_client.py" 714 "producer" fn-ref + "src.api_hook_client.post_gui" "src\api_hook_client.py" 149 "producer" fn-ref + "src.models.to_dict" "src\models.py" 672 "producer" fn-ref + "src.app_controller.list_sessions" "src\app_controller.py" 2880 "producer" fn-ref + "src.ai_client._send_qwen" "src\ai_client.py" 2773 "producer" fn-ref + "src.fuzzy_anchor.create_slice" "src\fuzzy_anchor.py" 20 "producer" fn-ref + "src.app_controller.get_symbol_definition" "src\app_controller.py" 69 "producer" fn-ref + "src.openai_compatible._to_dict_tool_call" "src\openai_compatible.py" 54 "producer" fn-ref + "src.api_hook_client.get_node_status" "src\api_hook_client.py" 532 "producer" fn-ref + "src.mcp_client.py_set_var_declaration" "src\mcp_client.py" 1419 "producer" fn-ref + "src.mcp_client.py_get_class_summary" "src\mcp_client.py" 1395 "producer" fn-ref + "src.api_hook_client.post_session" "src\api_hook_client.py" 117 "producer" fn-ref + "src.app_controller.delete_session" "src\app_controller.py" 2889 "producer" fn-ref + "src.app_controller.get_performance" "src\app_controller.py" 2856 "producer" fn-ref + "src.mcp_tool_specs.to_dict" "src\mcp_tool_specs.py" 46 "producer" fn-ref + "src.theme_models.to_dict" "src\theme_models.py" 137 "producer" fn-ref + "src.code_path_audit_cross_audit._file_to_aggregates" "src\code_path_audit_cross_audit.py" 36 "producer" fn-ref + "src.code_path_audit.to_markdown" "src\code_path_audit.py" 939 "producer" fn-ref + "src.mcp_client.py_check_syntax_result" "src\mcp_client.py" 880 "producer" fn-ref + "src.models.to_dict" "src\models.py" 596 "producer" fn-ref + "src.code_path_audit.load_frequency_overrides" "src\code_path_audit.py" 494 "producer" fn-ref + "src.ai_client._ensure_grok_client" "src\ai_client.py" 2519 "producer" fn-ref + "src.app_controller.pending_actions" "src\app_controller.py" 2874 "producer" fn-ref + "src.ai_client.get_token_stats" "src\ai_client.py" 3185 "producer" fn-ref + "src.models.to_dict" "src\models.py" 558 "producer" fn-ref + "src.models._load_config_from_disk" "src\models.py" 186 "producer" fn-ref + "src.orchestrator_pm.get_track_history_summary" "src\orchestrator_pm.py" 14 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 470 "producer" fn-ref + "src.mcp_client.ts_c_get_skeleton" "src\mcp_client.py" 1149 "producer" fn-ref + "src.app_controller.warmup_canaries" "src\app_controller.py" 2601 "producer" fn-ref + "src.mcp_client.get_tool_schemas" "src\mcp_client.py" 1954 "producer" fn-ref + "src.app_controller._extract_tool_name" "src\app_controller.py" 4460 "producer" fn-ref + "src.events._make_serializable" "src\events.py" 170 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1024 "producer" fn-ref + "src.command_palette.register" "src\command_palette.py" 32 "producer" fn-ref + "src.ai_client._chunk_text" "src\ai_client.py" 1278 "producer" fn-ref + "src.code_path_audit_analysis._analyze_function_param_names" "src\code_path_audit_analysis.py" 67 "producer" fn-ref + "src.summarize.summarise_file" "src\summarize.py" 159 "producer" fn-ref + "src.mcp_client.py_set_var_declaration_result" "src\mcp_client.py" 789 "producer" fn-ref + "src.code_path_audit_render.render_full_markdown" "src\code_path_audit_render.py" 16 "producer" fn-ref + "src.ai_client.run_discussion_compression" "src\ai_client.py" 3409 "producer" fn-ref + "src.mcp_client.ts_cpp_get_definition" "src\mcp_client.py" 1245 "producer" fn-ref + "src.ai_client._run_tier4_patch_generation_result" "src\ai_client.py" 3118 "producer" fn-ref + "src.history.to_dict" "src\history.py" 24 "producer" fn-ref + "src.api_hook_client.select_list_item" "src\api_hook_client.py" 256 "producer" fn-ref + "src.models.to_dict" "src\models.py" 288 "producer" fn-ref + "src.mcp_client.get_all_tools" "src\mcp_client.py" 1737 "producer" fn-ref + "src.project_manager.load_project" "src\project_manager.py" 186 "producer" fn-ref + "src.ai_client._get_combined_system_prompt" "src\ai_client.py" 221 "producer" fn-ref + "src.mcp_client.py_get_imports_result" "src\mcp_client.py" 853 "producer" fn-ref + "src.models.to_dict" "src\models.py" 618 "producer" fn-ref + "src.personas.load_all" "src\personas.py" 29 "producer" fn-ref + "src.app_controller.get_session_insights" "src\app_controller.py" 3049 "producer" fn-ref + "src.app_controller.parse_symbols" "src\app_controller.py" 63 "producer" fn-ref + "src.code_path_audit_render.render_call_graph_rollup" "src\code_path_audit_render.py" 309 "producer" fn-ref + "src.api_hook_client.select_tab" "src\api_hook_client.py" 263 "producer" fn-ref + "src.ai_client._list_grok_models" "src\ai_client.py" 2612 "producer" fn-ref + "src.app_controller._api_list_sessions" "src\app_controller.py" 364 "producer" fn-ref + "src.beads_client.create_bead" "src\beads_client.py" 42 "producer" fn-ref + "src.mcp_client.ts_c_get_code_outline" "src\mcp_client.py" 1163 "producer" fn-ref + "src.mcp_client.py_get_definition" "src\mcp_client.py" 1347 "producer" fn-ref + "src.app_controller.rag_mcp_server" "src\app_controller.py" 1711 "producer" fn-ref + "src.mcp_client.set_file_slice" "src\mcp_client.py" 1120 "producer" fn-ref + "src.models.get" "src\models.py" 349 "producer" fn-ref + "src.mcp_client.search_files_result" "src\mcp_client.py" 284 "producer" fn-ref + "src.project_manager.default_discussion" "src\project_manager.py" 117 "producer" fn-ref + "src.ai_client._extract_minimax_reasoning" "src\ai_client.py" 2677 "producer" fn-ref + "src.mcp_client.py_update_definition" "src\mcp_client.py" 1359 "producer" fn-ref + "src.commands.register" "src\commands.py" 39 "producer" fn-ref + "src.code_path_audit._atom" "src\code_path_audit.py" 865 "producer" fn-ref + "src.ai_client._extract_gemini_thoughts_result" "src\ai_client.py" 1768 "producer" fn-ref + "src.rag_engine.get_all_indexed_paths" "src\rag_engine.py" 382 "producer" fn-ref + "src.mcp_client.ts_cpp_get_code_outline_result" "src\mcp_client.py" 530 "producer" fn-ref + "src.diff_viewer.get_line_color" "src\diff_viewer.py" 117 "producer" fn-ref + "src.mcp_client.get_file_slice" "src\mcp_client.py" 1108 "producer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "producer" fn-ref + "src.external_editor.create_temp_modified_file" "src\external_editor.py" 147 "producer" fn-ref + "src.models.model" "src\models.py" 775 "producer" fn-ref + "src.commands.__getattr__" "src\commands.py" 43 "producer" fn-ref + "src.summary_cache.get_file_hash" "src\summary_cache.py" 10 "producer" fn-ref + "src.presets.get_preset_scope" "src\presets.py" 84 "producer" fn-ref + "src.app_controller._compute_warmup_list" "src\app_controller.py" 2570 "producer" fn-ref + "src.app_controller._resolve_log_ref" "src\app_controller.py" 2145 "producer" fn-ref + "src.api_hook_client.clear_events" "src\api_hook_client.py" 129 "producer" fn-ref + "src.app_controller.stream" "src\app_controller.py" 2871 "producer" fn-ref + "src.ai_client._create_gemini_cache_result" "src\ai_client.py" 1706 "producer" fn-ref + "src.app_controller._api_get_diagnostics" "src\app_controller.py" 202 "producer" fn-ref "src.app_controller.get_gui_state" "src\app_controller.py" 2829 "producer" fn-ref + "src.code_path_audit.read_input_json" "src\code_path_audit.py" 660 "producer" fn-ref + "src.api_hook_client.get_project" "src\api_hook_client.py" 367 "producer" fn-ref + "src.mcp_client.web_search_result" "src\mcp_client.py" 1026 "producer" fn-ref + "src.aggregate.build_tier3_context" "src\aggregate.py" 382 "producer" fn-ref + "src.app_controller._api_get_session" "src\app_controller.py" 374 "producer" fn-ref + "src.mcp_client.py_get_code_outline" "src\mcp_client.py" 1323 "producer" fn-ref + "src.app_controller._api_pending_actions" "src\app_controller.py" 335 "producer" fn-ref + "src.log_registry.__getitem__" "src\log_registry.py" 93 "producer" fn-ref + "src.gui_2.app_debug_info" "src\gui_2.py" 810 "producer" fn-ref + "src.mcp_client.py_get_signature" "src\mcp_client.py" 1371 "producer" fn-ref + "src.events.get" "src\events.py" 119 "producer" fn-ref + "src.app_controller.get_context" "src\app_controller.py" 2892 "producer" fn-ref + "src.mcp_client.py_get_docstring" "src\mcp_client.py" 1479 "producer" fn-ref + "src.openai_schemas.to_dict" "src\openai_schemas.py" 35 "producer" fn-ref + "src.mcp_client.py_get_symbol_info_result" "src\mcp_client.py" 629 "producer" fn-ref + "src.api_hook_client.kill_mma_worker" "src\api_hook_client.py" 561 "producer" fn-ref + "src.external_editor.build_diff_command" "src\external_editor.py" 30 "producer" fn-ref + "src.presets._load_file" "src\presets.py" 99 "producer" fn-ref + "src.api_hook_client.get_gui_state" "src\api_hook_client.py" 165 "producer" fn-ref + "src.mcp_client.derive_code_path_result" "src\mcp_client.py" 923 "producer" fn-ref + "src.code_path_audit_ssdl.render_ssdl_rollup" "src\code_path_audit_ssdl.py" 221 "producer" fn-ref + "src.gui_2.current_provider" "src\gui_2.py" 772 "producer" fn-ref + "src.openai_schemas.to_dict" "src\openai_schemas.py" 54 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 473 "producer" fn-ref + "src.app_controller.ai_status" "src\app_controller.py" 1598 "producer" fn-ref + "src.api_hook_client.get_gui_health" "src\api_hook_client.py" 434 "producer" fn-ref + "src.ai_client.run_with_tool_loop" "src\ai_client.py" 833 "producer" fn-ref + "src.api_hook_client.get_text_value" "src\api_hook_client.py" 204 "producer" fn-ref + "src.app_controller._api_get_context" "src\app_controller.py" 398 "producer" fn-ref + "src.ai_client.get_provider" "src\ai_client.py" 448 "producer" fn-ref + "src.log_registry.to_dict" "src\log_registry.py" 81 "producer" fn-ref + "src.file_cache.get_targeted_view" "src\file_cache.py" 371 "producer" fn-ref + "src.mcp_client.ts_cpp_get_signature" "src\mcp_client.py" 1257 "producer" fn-ref + "src.mcp_client.ts_c_get_code_outline_result" "src\mcp_client.py" 451 "producer" fn-ref + "src.aggregate.build_markdown_no_history" "src\aggregate.py" 366 "producer" fn-ref + "src.mcp_client.edit_file_result" "src\mcp_client.py" 312 "producer" fn-ref + "src.summarize._summarise_markdown" "src\summarize.py" 105 "producer" fn-ref + "src.api_hook_client.get_mma_status" "src\api_hook_client.py" 539 "producer" fn-ref + "src.app_controller.confirm_action" "src\app_controller.py" 2877 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1000 "producer" fn-ref + "src.ai_client._build_file_context_text" "src\ai_client.py" 1092 "producer" fn-ref + "src.gui_2.askopenfilename" "src\gui_2.py" 88 "producer" fn-ref + "src.file_cache.get_skeleton" "src\file_cache.py" 207 "producer" fn-ref + "src.ai_client.run_tier4_patch_callback" "src\ai_client.py" 3115 "producer" fn-ref + "src.mcp_client._ast_get_definition" "src\mcp_client.py" 424 "producer" fn-ref + "src.app_controller._api_get_key" "src\app_controller.py" 100 "producer" fn-ref + "src.markdown_helper._normalize_nested_list_endings" "src\markdown_helper.py" 228 "producer" fn-ref + "src.app_controller.active_project_root" "src\app_controller.py" 1546 "producer" fn-ref + "src.app_controller.submit_io" "src\app_controller.py" 2646 "producer" fn-ref + "src.code_path_audit.to_tree" "src\code_path_audit.py" 1007 "producer" fn-ref + "src.aggregate.compute_file_stats" "src\aggregate.py" 104 "producer" fn-ref + "src.mcp_client.py_get_code_outline_result" "src\mcp_client.py" 612 "producer" fn-ref + "src.mcp_client.ts_c_get_signature_result" "src\mcp_client.py" 481 "producer" fn-ref + "src.mcp_client.get_ui_performance" "src\mcp_client.py" 1601 "producer" fn-ref + "src.models.__getattr__" "src\models.py" 271 "producer" fn-ref + "src.log_registry.to_dict" "src\log_registry.py" 62 "producer" fn-ref + "src.models.to_dict" "src\models.py" 913 "producer" fn-ref + "src.models.to_dict" "src\models.py" 886 "producer" fn-ref + "src.app_controller.status" "src\app_controller.py" 2865 "producer" fn-ref + "src.gui_2.truncate_entries" "src\gui_2.py" 173 "producer" fn-ref + "src.rag_engine._chunk_text" "src\rag_engine.py" 210 "producer" fn-ref + "src.app_controller.summary_cache" "src\app_controller.py" 1618 "producer" fn-ref + "src.aggregate.build_discussion_section" "src\aggregate.py" 125 "producer" fn-ref + "src.app_controller.generate" "src\app_controller.py" 2868 "producer" fn-ref + "src.gui_2.ui_screenshot_paths" "src\gui_2.py" 1014 "producer" fn-ref + "src.models.to_dict" "src\models.py" 441 "producer" fn-ref + "src.app_controller.get_api_project" "src\app_controller.py" 2853 "producer" fn-ref + "src.api_hook_client.spawn_mma_worker" "src\api_hook_client.py" 553 "producer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "producer" fn-ref + "src.mcp_client.web_search" "src\mcp_client.py" 1578 "producer" fn-ref + "src.log_registry.get" "src\log_registry.py" 105 "producer" fn-ref + "src.conductor_tech_lead.generate_tickets" "src\conductor_tech_lead.py" 45 "producer" fn-ref + "src.api_hook_client.click" "src\api_hook_client.py" 223 "producer" fn-ref + "src.personas._load_file" "src\personas.py" 86 "producer" fn-ref + "src.ai_client.get_comms_log" "src\ai_client.py" 273 "producer" fn-ref + "src.app_controller._api_generate" "src\app_controller.py" 221 "producer" fn-ref + "src.theme_models.to_dict" "src\theme_models.py" 107 "producer" fn-ref + "src.ai_client._list_gemini_cli_models" "src\ai_client.py" 1616 "producer" fn-ref + "src.log_registry.sessions" "src\log_registry.py" 155 "producer" fn-ref + "src.aggregate.build_markdown" "src\aggregate.py" 475 "producer" fn-ref + "src.app_controller.rag_emb_provider" "src\app_controller.py" 1686 "producer" fn-ref + "src.file_cache.find_id" "src\file_cache.py" 129 "producer" fn-ref + "src.aggregate.build_screenshots_section" "src\aggregate.py" 142 "producer" fn-ref + "src.ai_client._send_gemini_cli" "src\ai_client.py" 2019 "producer" fn-ref + "src.markdown_helper._normalize_list_continuations" "src\markdown_helper.py" 254 "producer" fn-ref + "src.code_path_audit_render.render_field_usage_rollup" "src\code_path_audit_render.py" 285 "producer" fn-ref + "src.outline_tool.get_docstring" "src\outline_tool.py" 56 "producer" fn-ref + "src.api_hook_client._make_request" "src\api_hook_client.py" 65 "producer" fn-ref + "src.app_controller.get_diagnostics" "src\app_controller.py" 2862 "producer" fn-ref + "src.api_hooks._safe_controller_result" "src\api_hooks.py" 81 "producer" fn-ref + "src.code_path_audit._resolve_aliases" "src\code_path_audit.py" 224 "producer" fn-ref + "src.ai_client._content_block_to_dict" "src\ai_client.py" 1200 "producer" fn-ref + "src.project_manager.entry_to_str" "src\project_manager.py" 49 "producer" fn-ref + "src.conductor_tech_lead.topological_sort" "src\conductor_tech_lead.py" 107 "producer" fn-ref + "src.mcp_client.get_tree_result" "src\mcp_client.py" 992 "producer" fn-ref + "src.mcp_client.ts_cpp_get_definition_result" "src\mcp_client.py" 546 "producer" fn-ref + "src.paths.get_full_path_info" "src\paths.py" 281 "producer" fn-ref + "src.app_controller.get_api_session" "src\app_controller.py" 2847 "producer" fn-ref + "src.mcp_client.async_dispatch" "src\mcp_client.py" 1939 "producer" fn-ref + "src.code_path_audit.render_rollups" "src\code_path_audit.py" 1268 "producer" fn-ref + "src.gui_2.asksaveasfilename" "src\gui_2.py" 91 "producer" fn-ref + "src.mcp_client.py_get_class_summary_result" "src\mcp_client.py" 737 "producer" fn-ref + "src.gui_2.current_model" "src\gui_2.py" 780 "producer" fn-ref + "src.app_controller._do_generate" "src\app_controller.py" 4004 "producer" fn-ref + "src.app_controller.mcp_config_json" "src\app_controller.py" 1734 "producer" fn-ref + "src.mcp_client.get_ui_performance_result" "src\mcp_client.py" 1066 "producer" fn-ref + "src.app_controller.wait" "src\app_controller.py" 5205 "producer" fn-ref + "src.app_controller.ui_file_paths" "src\app_controller.py" 1764 "producer" fn-ref + "src.personas.get_persona_scope" "src\personas.py" 61 "producer" fn-ref + "src.ai_client.get_combined_system_prompt" "src\ai_client.py" 236 "producer" fn-ref + "src.code_path_audit.to_dsl_v2" "src\code_path_audit.py" 871 "producer" fn-ref + "src.api_hook_client.wait_for_event" "src\api_hook_client.py" 136 "producer" fn-ref + "src.summarize._summarise_python" "src\summarize.py" 31 "producer" fn-ref + "src.file_cache._get_name" "src\file_cache.py" 123 "producer" fn-ref + "src.app_controller.__getattr__" "src\app_controller.py" 1273 "producer" fn-ref + "src.ai_client._list_qwen_models" "src\ai_client.py" 2769 "producer" fn-ref + "src.file_cache.get_definition" "src\file_cache.py" 538 "producer" fn-ref + "src.api_hook_client.get_warmup_status" "src\api_hook_client.py" 325 "producer" fn-ref + "src.code_path_audit.code_path_audit_v2" "src\code_path_audit.py" 1349 "producer" fn-ref + "src.api_hook_client.get_mma_workers" "src\api_hook_client.py" 546 "producer" fn-ref + "src.models.to_dict" "src\models.py" 646 "producer" fn-ref + "src.models.to_dict" "src\models.py" 406 "producer" fn-ref + "src.project_manager.now_ts" "src\project_manager.py" 39 "producer" fn-ref + "src.commands._get_real_registry" "src\commands.py" 47 "producer" fn-ref + "src.code_path_audit_cross_audit._aggregate_for_fqname" "src\code_path_audit_cross_audit.py" 51 "producer" fn-ref + "src.project_manager.clean_nones" "src\project_manager.py" 220 "producer" fn-ref + "src.ai_client._run_tier4_analysis_result" "src\ai_client.py" 3042 "producer" fn-ref + "src.models._clean_nones" "src\models.py" 179 "producer" fn-ref + "src.mcp_client.fetch_url" "src\mcp_client.py" 1590 "producer" fn-ref + "src.ai_client._get_anthropic_tools" "src\ai_client.py" 664 "producer" fn-ref + "src.models.to_dict" "src\models.py" 938 "producer" fn-ref + "src.tool_presets.load_all_presets" "src\tool_presets.py" 42 "producer" fn-ref + "src.mcp_client.py_get_docstring_result" "src\mcp_client.py" 898 "producer" fn-ref + "src.models.parse_history_entries" "src\models.py" 214 "producer" fn-ref + "src.api_hook_client.get_events" "src\api_hook_client.py" 124 "producer" fn-ref + "src.project_manager.str_to_entry" "src\project_manager.py" 75 "producer" fn-ref + "src.mcp_client.set_file_slice_result" "src\mcp_client.py" 374 "producer" fn-ref + "src.workspace_manager._load_file" "src\workspace_manager.py" 72 "producer" fn-ref + "src.mcp_client.get_servers_status" "src\mcp_client.py" 1748 "producer" fn-ref + "src.ai_client.get_current_tier" "src\ai_client.py" 159 "producer" fn-ref + "src.models.to_dict" "src\models.py" 794 "producer" fn-ref + "src.hot_reloader.capture_state" "src\hot_reloader.py" 33 "producer" fn-ref + "src.presets.load_all" "src\presets.py" 24 "producer" fn-ref + "src.code_path_audit.parse_dsl_v2" "src\code_path_audit.py" 1034 "producer" fn-ref + "src.mcp_client.py_check_syntax" "src\mcp_client.py" 1455 "producer" fn-ref + "src.mcp_client.edit_file" "src\mcp_client.py" 1079 "producer" fn-ref + "src.app_controller.get_api_key" "src\app_controller.py" 2823 "producer" fn-ref + "src.mcp_client._ast_get_skeleton" "src\mcp_client.py" 416 "producer" fn-ref + "src.code_path_audit.run_all_cross_audit_reads" "src\code_path_audit.py" 823 "producer" fn-ref + "src.api_hook_client.get_io_pool_status" "src\api_hook_client.py" 420 "producer" fn-ref + "src.api_hook_client.get_status" "src\api_hook_client.py" 105 "producer" fn-ref + "src.mcp_client._ast_get_code_outline" "src\mcp_client.py" 420 "producer" fn-ref + "src.ai_client.get_bias_profile" "src\ai_client.py" 619 "producer" fn-ref + "src.tool_presets.load_all_bias_profiles" "src\tool_presets.py" 91 "producer" fn-ref + "src.api_hook_client.set_value" "src\api_hook_client.py" 212 "producer" fn-ref + "src.app_controller.get_mma_status" "src\app_controller.py" 2835 "producer" fn-ref + "src.gemini_cli_adapter.send" "src\gemini_cli_adapter.py" 61 "producer" fn-ref + "src.api_hook_client.inject_context" "src\api_hook_client.py" 484 "producer" fn-ref + "src.app_controller._api_get_performance" "src\app_controller.py" 195 "producer" fn-ref + "src.app_controller.rag_mcp_tool" "src\app_controller.py" 1718 "producer" fn-ref + "src.app_controller.post_api_session" "src\app_controller.py" 2850 "producer" fn-ref + "src.session_logger.log_tool_output" "src\session_logger.py" 211 "producer" fn-ref + "src.api_hook_client.get_startup_timeline" "src\api_hook_client.py" 353 "producer" fn-ref + "src.file_cache.get_code_outline" "src\file_cache.py" 748 "producer" fn-ref + "src.project_manager.default_project" "src\project_manager.py" 123 "producer" fn-ref + "src.mcp_client.get_file_slice_result" "src\mcp_client.py" 357 "producer" fn-ref + "src.app_controller._api_get_gui_state" "src\app_controller.py" 123 "producer" fn-ref + "src.tool_presets.load_all" "src\tool_presets.py" 63 "producer" fn-ref + "src.rag_engine._read_file_content_result" "src\rag_engine.py" 278 "producer" fn-ref + "src.app_controller._api_delete_session" "src\app_controller.py" 385 "producer" fn-ref + "src.gui_2.ui_file_paths" "src\gui_2.py" 995 "producer" fn-ref + "src.mcp_client.get_git_diff" "src\mcp_client.py" 1132 "producer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "producer" fn-ref + "src.models.to_dict" "src\models.py" 486 "producer" fn-ref + "src.summary_cache.get_summary" "src\summary_cache.py" 57 "producer" fn-ref + "src.warmup._snapshot" "src\warmup.py" 355 "producer" fn-ref + "src.file_cache.get_signature" "src\file_cache.py" 636 "producer" fn-ref + "src.api_hook_client.push_event" "src\api_hook_client.py" 156 "producer" fn-ref + "src.api_hook_client.get_warmup_canaries" "src\api_hook_client.py" 342 "producer" fn-ref + "src.mcp_client.ts_c_update_definition" "src\mcp_client.py" 1201 "producer" fn-ref + "src.api_hook_client.drag" "src\api_hook_client.py" 230 "producer" fn-ref + "src.ai_client._truncate_tool_output" "src\ai_client.py" 1047 "producer" fn-ref + "src.api_hook_client.get_indicator_state" "src\api_hook_client.py" 303 "producer" fn-ref + "src.theme_2.get_current_palette" "src\theme_2.py" 117 "producer" fn-ref + "src.provider_state.providers" "src\provider_state.py" 68 "producer" fn-ref + "src.api_hook_client.apply_patch" "src\api_hook_client.py" 281 "producer" fn-ref + "src.project_manager.get_git_commit" "src\project_manager.py" 104 "producer" fn-ref + "src.project_manager.format_discussion" "src\project_manager.py" 69 "producer" fn-ref + "src.mcp_client.py_get_skeleton" "src\mcp_client.py" 1311 "producer" fn-ref + "src.mcp_client.py_get_var_declaration" "src\mcp_client.py" 1407 "producer" fn-ref + "src.ai_client._build_file_diff_text" "src\ai_client.py" 1105 "producer" fn-ref + "src.app_controller._api_get_mma_status" "src\app_controller.py" 144 "producer" fn-ref + "src.markdown_table._split_row" "src\markdown_table.py" 36 "producer" fn-ref + "src.api_hook_client.get_patch_status" "src\api_hook_client.py" 295 "producer" fn-ref + "src.api_hooks_helpers._get_app_attr" "src\api_hooks_helpers.py" 3 "producer" fn-ref + "src.mcp_client.py_find_usages_result" "src\mcp_client.py" 811 "producer" fn-ref + "src.outline_tool.outline" "src\outline_tool.py" 44 "producer" fn-ref + "src.qwen_adapter.build_dashscope_tools" "src\qwen_adapter.py" 13 "producer" fn-ref + "src.theme_2.get_font_loading_params" "src\theme_2.py" 377 "producer" fn-ref + "src.api_hook_client.wait_for_project_switch" "src\api_hook_client.py" 389 "producer" fn-ref + "src.models.to_dict" "src\models.py" 971 "producer" fn-ref + "src.app_controller.health" "src\app_controller.py" 2826 "producer" fn-ref + "src.vendor_capabilities.list_models_for_vendor" "src\vendor_capabilities.py" 44 "producer" fn-ref + "src.app_controller._api_stream" "src\app_controller.py" 327 "producer" fn-ref + "src.api_hook_client.get_value" "src\api_hook_client.py" 172 "producer" fn-ref + "src.summarize._summarise_toml" "src\summarize.py" 78 "producer" fn-ref + "src.app_controller.mma_status" "src\app_controller.py" 1606 "producer" fn-ref + "src.theme_models.load_themes_from_toml" "src\theme_models.py" 200 "producer" fn-ref + "src.api_hook_client.get_project_switch_status" "src\api_hook_client.py" 374 "producer" fn-ref + "src.app_controller.get_session" "src\app_controller.py" 2883 "producer" fn-ref + "src.ai_client._send_grok" "src\ai_client.py" 2530 "producer" fn-ref + "src.external_editor._find_vscode_common_paths" "src\external_editor.py" 90 "producer" fn-ref + "src.mcp_client.ts_c_get_skeleton_result" "src\mcp_client.py" 436 "producer" fn-ref + "src.ai_client._send_anthropic" "src\ai_client.py" 1405 "producer" fn-ref + "src.mcp_client.ts_c_get_definition" "src\mcp_client.py" 1177 "producer" fn-ref + "src.code_path_audit.load_memory_dim_overrides" "src\code_path_audit.py" 378 "producer" fn-ref + "src.mcp_client.ts_c_get_signature" "src\mcp_client.py" 1189 "producer" fn-ref + "src.app_controller._pending_mma_approval" "src\app_controller.py" 2776 "producer" fn-ref + "src.ai_client._send_deepseek" "src\ai_client.py" 2165 "producer" fn-ref + "src.models.to_dict" "src\models.py" 701 "producer" fn-ref + "src.api_hook_client.right_click" "src\api_hook_client.py" 237 "producer" fn-ref + "src.ai_client.run_subagent_summarization" "src\ai_client.py" 3356 "producer" fn-ref + "src.theme_2._build_semantic_colour_dict" "src\theme_2.py" 52 "producer" fn-ref + "src.api_hook_client.resume_mma_pipeline" "src\api_hook_client.py" 572 "producer" fn-ref + "src.paths.info" "src\paths.py" 286 "producer" fn-ref + "src.gui_2._populate_auto_slices_outline_result" "src\gui_2.py" 7926 "producer" fn-ref + "src.mcp_client.list_directory" "src\mcp_client.py" 191 "producer" fn-ref + "src.app_controller.rag_collection_name" "src\app_controller.py" 1725 "producer" fn-ref + "src.api_hook_client.get_financial_metrics" "src\api_hook_client.py" 520 "producer" fn-ref -\ === consumers (66 items) === - "src.aggregate.build_markdown_from_items" "src\aggregate.py" 348 "consumer" fn-ref - "src.ai_client._send_anthropic" "src\ai_client.py" 1405 "consumer" fn-ref - "src.app_controller._refresh_api_metrics" "src\app_controller.py" 3074 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 575 "consumer" fn-ref - "src.ai_client._add_history_cache_breakpoint" "src\ai_client.py" 1299 "consumer" fn-ref - "src.ai_client._append_comms" "src\ai_client.py" 257 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 656 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 920 "consumer" fn-ref - "src.ai_client._repair_deepseek_history" "src\ai_client.py" 2138 "consumer" fn-ref - "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 416 "consumer" fn-ref - "src.ai_client._send_grok" "src\ai_client.py" 2530 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 1072 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 295 "consumer" fn-ref - "src.aggregate.build_tier3_context" "src\aggregate.py" 382 "consumer" fn-ref - "src.aggregate.build_markdown_no_history" "src\aggregate.py" 366 "consumer" fn-ref +\ === consumers (752 items) === "src.models.from_dict" "src\models.py" 506 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 603 "consumer" fn-ref - "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 814 "consumer" fn-ref - "src.app_controller._on_comms_entry" "src\app_controller.py" 4282 "consumer" fn-ref - "src.aggregate.run" "src\aggregate.py" 479 "consumer" fn-ref - "src.ai_client._trim_minimax_history" "src\ai_client.py" 2482 "consumer" fn-ref - "src.app_controller._start_track_logic" "src\app_controller.py" 4721 "consumer" fn-ref - "src.project_manager.save_project" "src\project_manager.py" 229 "consumer" fn-ref - "src.ai_client._send_gemini" "src\ai_client.py" 1802 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 378 "consumer" fn-ref - "src.project_manager.format_discussion" "src\project_manager.py" 69 "consumer" fn-ref - "src.ai_client._repair_minimax_history" "src\ai_client.py" 2462 "consumer" fn-ref + "src.code_path_audit.aggregate_cross_audit_findings" "src\code_path_audit.py" 785 "consumer" fn-ref + "src.api_hook_client.approve_mma_ticket" "src\api_hook_client.py" 583 "consumer" fn-ref + "src.log_registry.update_auto_whitelist_status" "src\log_registry.py" 329 "consumer" fn-ref "src.models.from_dict" "src\models.py" 893 "consumer" fn-ref - "src.ai_client._repair_anthropic_history" "src\ai_client.py" 1381 "consumer" fn-ref - "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "consumer" fn-ref - "src.ai_client._strip_stale_file_refreshes" "src\ai_client.py" 1253 "consumer" fn-ref - "src.ai_client.send" "src\ai_client.py" 3208 "consumer" fn-ref - "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "consumer" fn-ref - "src.app_controller._start_track_logic_result" "src\app_controller.py" 4728 "consumer" fn-ref - "src.ai_client._send_minimax" "src\ai_client.py" 2616 "consumer" fn-ref - "src.ai_client._send_llama_native" "src\ai_client.py" 2958 "consumer" fn-ref + "src.ai_client._send_gemini" "src\ai_client.py" 1802 "consumer" fn-ref "src.models.from_dict" "src\models.py" 1038 "consumer" fn-ref - "src.ai_client._create_gemini_cache_result" "src\ai_client.py" 1706 "consumer" fn-ref - "src.project_manager.entry_to_str" "src\project_manager.py" 49 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 1007 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 712 "consumer" fn-ref - "src.models._save_config_to_disk" "src\models.py" 199 "consumer" fn-ref - "src.ai_client._send_qwen" "src\ai_client.py" 2773 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 866 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 747 "consumer" fn-ref - "src.ai_client._trim_anthropic_history" "src\ai_client.py" 1353 "consumer" fn-ref - "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "consumer" fn-ref - "src.ai_client._estimate_prompt_tokens" "src\ai_client.py" 1243 "consumer" fn-ref - "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "consumer" fn-ref - "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 945 "consumer" fn-ref - "src.project_manager.flat_config" "src\project_manager.py" 267 "consumer" fn-ref - "src.ai_client._send_deepseek" "src\ai_client.py" 2165 "consumer" fn-ref - "src.ai_client._send_llama" "src\ai_client.py" 2858 "consumer" fn-ref + "src.project_manager.save_project" "src\project_manager.py" 229 "consumer" fn-ref + "src.ai_client.run_tier4_analysis" "src\ai_client.py" 3082 "consumer" fn-ref + "src.app_controller._flush_to_project_result" "src\app_controller.py" 2180 "consumer" fn-ref + "src.code_path_audit.classify_memory_dim" "src\code_path_audit.py" 399 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 206 "consumer" fn-ref + "src.beads_client.create_bead" "src\beads_client.py" 42 "consumer" fn-ref + "src.command_palette.fuzzy_match" "src\command_palette.py" 54 "consumer" fn-ref + "src.theme_2.set_gamma" "src\theme_2.py" 93 "consumer" fn-ref + "src.multi_agent_conductor.update_task_status" "src\multi_agent_conductor.py" 166 "consumer" fn-ref + "src.code_path_audit.estimate_call_frequency" "src\code_path_audit.py" 507 "consumer" fn-ref + "src.file_cache.walk" "src\file_cache.py" 799 "consumer" fn-ref + "src.code_path_audit.detect_access_pattern" "src\code_path_audit.py" 444 "consumer" fn-ref + "src.api_hooks._get_app_attr" "src\api_hooks.py" 56 "consumer" fn-ref + "src.ai_client._send_llama_native" "src\ai_client.py" 2958 "consumer" fn-ref + "src.app_controller._handle_mma_state_update" "src\app_controller.py" 460 "consumer" fn-ref + "src.ai_client._list_deepseek_models" "src\ai_client.py" 2135 "consumer" fn-ref + "src.api_hooks.__init__" "src\api_hooks.py" 910 "consumer" fn-ref + "src.app_controller._on_comms_entry" "src\app_controller.py" 4282 "consumer" fn-ref + "src.multi_agent_conductor.approve_task" "src\multi_agent_conductor.py" 158 "consumer" fn-ref + "src.gui_2.ui_screenshot_paths" "src\gui_2.py" 1018 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 157 "consumer" fn-ref + "src.ai_client._extract_gemini_thoughts_result" "src\ai_client.py" 1768 "consumer" fn-ref + "src.theme_2.get_brightness" "src\theme_2.py" 87 "consumer" fn-ref + "src.history.undo" "src\history.py" 92 "consumer" fn-ref + "src.gui_2._drain_normalize_errors" "src\gui_2.py" 7417 "consumer" fn-ref + "src.app_controller._rename_discussion" "src\app_controller.py" 4115 "consumer" fn-ref + "src.mcp_client.get_file_slice" "src\mcp_client.py" 1108 "consumer" fn-ref + "src.imgui_scopes.tab_bar" "src\imgui_scopes.py" 187 "consumer" fn-ref + "src.session_logger.log_tool_call" "src\session_logger.py" 166 "consumer" fn-ref + "src.gui_2.current_model" "src\gui_2.py" 784 "consumer" fn-ref + "src.rag_engine.embed" "src\rag_engine.py" 72 "consumer" fn-ref + "src.presets.get_preset_scope" "src\presets.py" 84 "consumer" fn-ref + "src.code_path_audit.file_origin_memory_dim" "src\code_path_audit.py" 391 "consumer" fn-ref + "src.rag_engine.__init__" "src\rag_engine.py" 69 "consumer" fn-ref + "src.theme_2.get_gamma" "src\theme_2.py" 89 "consumer" fn-ref + "src.imgui_scopes.style_var" "src\imgui_scopes.py" 155 "consumer" fn-ref + "src.presets._save_file" "src\presets.py" 117 "consumer" fn-ref + "src.aggregate.is_absolute_with_drive" "src\aggregate.py" 60 "consumer" fn-ref + "src.app_controller._topological_sort_tickets_result" "src\app_controller.py" 4708 "consumer" fn-ref + "src.app_controller.ui_file_paths" "src\app_controller.py" 1768 "consumer" fn-ref + "src.app_controller.rag_emb_provider" "src\app_controller.py" 1690 "consumer" fn-ref + "src.code_path_audit.synthesize_aggregate_profile" "src\code_path_audit.py" 1111 "consumer" fn-ref + "src.rag_engine._check_existing_index_result" "src\rag_engine.py" 260 "consumer" fn-ref + "src.code_path_audit.read_input_json" "src\code_path_audit.py" 660 "consumer" fn-ref + "src.file_cache.walk" "src\file_cache.py" 646 "consumer" fn-ref + "src.log_registry.is_session_whitelisted" "src\log_registry.py" 313 "consumer" fn-ref + "src.mcp_client.py_update_definition_result" "src\mcp_client.py" 663 "consumer" fn-ref + "src.markdown_helper.render_unindented" "src\markdown_helper.py" 404 "consumer" fn-ref + "src.summary_cache.set_summary" "src\summary_cache.py" 70 "consumer" fn-ref + "src.qwen_adapter.classify_dashscope_error" "src\qwen_adapter.py" 26 "consumer" fn-ref + "src.app_controller._cb_save_view_preset" "src\app_controller.py" 3696 "consumer" fn-ref + "src.gui_2.delete_context_preset" "src\gui_2.py" 989 "consumer" fn-ref + "src.imgui_scopes.style_color" "src\imgui_scopes.py" 141 "consumer" fn-ref + "src.app_controller._handle_set_tool_log_dirty" "src\app_controller.py" 737 "consumer" fn-ref + "src.mcp_client.read_file" "src\mcp_client.py" 203 "consumer" fn-ref + "src.app_controller._api_get_session" "src\app_controller.py" 374 "consumer" fn-ref + "src.theme_2.get_contrast" "src\theme_2.py" 88 "consumer" fn-ref + "src.external_editor.launch_diff" "src\external_editor.py" 37 "consumer" fn-ref + "src.paths.get_archive_dir" "src\paths.py" 250 "consumer" fn-ref + "src.theme_models.from_dict" "src\theme_models.py" 145 "consumer" fn-ref + "src.ai_client._classify_minimax_error" "src\ai_client.py" 375 "consumer" fn-ref + "src.rag_engine._chunk_code_result" "src\rag_engine.py" 226 "consumer" fn-ref + "src.app_controller._set_rag_status" "src\app_controller.py" 3434 "consumer" fn-ref + "src.gui_2._resolve_font_path_result" "src\gui_2.py" 227 "consumer" fn-ref "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "consumer" fn-ref - "src.ai_client._send_gemini_cli" "src\ai_client.py" 2019 "consumer" fn-ref - "src.aggregate._build_files_section_from_items" "src\aggregate.py" 300 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 683 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 630 "consumer" fn-ref - "src.ai_client._invalidate_token_estimate" "src\ai_client.py" 1240 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 454 "consumer" fn-ref + "src.app_controller.__init__" "src\app_controller.py" 5194 "consumer" fn-ref + "src.gui_2._diag_layout_state_ini_text_result" "src\gui_2.py" 8373 "consumer" fn-ref + "src.mcp_client._ast_update_definition" "src\mcp_client.py" 432 "consumer" fn-ref + "src.app_controller.mutate_dag" "src\app_controller.py" 4877 "consumer" fn-ref + "src.mcp_client.py_get_symbol_info_result" "src\mcp_client.py" 629 "consumer" fn-ref + "src.app_controller.cb_load_prior_log" "src\app_controller.py" 2120 "consumer" fn-ref + "src.rag_engine.embed" "src\rag_engine.py" 64 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 866 "consumer" fn-ref + "src.project_manager.save_track_history" "src\project_manager.py" 329 "consumer" fn-ref + "src.ai_client.set_current_tier" "src\ai_client.py" 163 "consumer" fn-ref + "src.ai_client._send_cli_round_result" "src\ai_client.py" 1746 "consumer" fn-ref + "src.app_controller._save_fallback_project_result" "src\app_controller.py" 2461 "consumer" fn-ref + "src.module_loader._require_warmed" "src\module_loader.py" 35 "consumer" fn-ref + "src.models.load_mcp_config" "src\models.py" 1084 "consumer" fn-ref + "src.ai_client._extract_dashscope_tool_calls" "src\ai_client.py" 2754 "consumer" fn-ref + "src.mcp_client.fetch_url_result" "src\mcp_client.py" 1043 "consumer" fn-ref "src.ai_client._strip_cache_controls" "src\ai_client.py" 1291 "consumer" fn-ref + "src.app_controller._handle_clear_summary_cache" "src\app_controller.py" 3372 "consumer" fn-ref + "src.gui_2._tier_stream_scroll_sync_result" "src\gui_2.py" 1644 "consumer" fn-ref + "src.workspace_manager.delete_profile" "src\workspace_manager.py" 62 "consumer" fn-ref + "src.app_controller._update_gcli_adapter" "src\app_controller.py" 1831 "consumer" fn-ref + "src.ai_client._estimate_prompt_tokens" "src\ai_client.py" 1243 "consumer" fn-ref + "src.mcp_client.handle_starttag" "src\mcp_client.py" 1564 "consumer" fn-ref + "src.theme_2.set_contrast" "src\theme_2.py" 92 "consumer" fn-ref + "src.app_controller._delete_discussion" "src\app_controller.py" 4131 "consumer" fn-ref + "src.aggregate._build_files_section_from_items" "src\aggregate.py" 300 "consumer" fn-ref + "src.session_logger.open_session" "src\session_logger.py" 60 "consumer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 473 "consumer" fn-ref + "src.code_path_audit_analysis.compute_real_type_alias_coverage" "src\code_path_audit_analysis.py" 222 "consumer" fn-ref + "src.context_presets.load_all" "src\context_presets.py" 10 "consumer" fn-ref + "src.warmup.submit" "src\warmup.py" 92 "consumer" fn-ref + "src.gui_2._render_ast_inspector_file_content_result" "src\gui_2.py" 7896 "consumer" fn-ref + "src.ai_client.list_models" "src\ai_client.py" 506 "consumer" fn-ref + "src.ai_client._run_script" "src\ai_client.py" 1038 "consumer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "consumer" fn-ref + "src.theme_2.load_from_config" "src\theme_2.py" 320 "consumer" fn-ref + "src.app_controller._handle_click" "src\app_controller.py" 583 "consumer" fn-ref + "src.warmup._record_failure" "src\warmup.py" 231 "consumer" fn-ref + "src.rag_engine._parse_search_response_result" "src\rag_engine.py" 88 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 171 "consumer" fn-ref + "src.commands._toggle_window" "src\commands.py" 64 "consumer" fn-ref + "src.rag_engine.embed" "src\rag_engine.py" 56 "consumer" fn-ref + "src.mcp_client.ts_cpp_update_definition" "src\mcp_client.py" 1269 "consumer" fn-ref + "src.mcp_client.ts_cpp_get_signature" "src\mcp_client.py" 1257 "consumer" fn-ref + "src.events.__init__" "src\events.py" 156 "consumer" fn-ref + "src.mcp_client.ts_c_get_code_outline_result" "src\mcp_client.py" 451 "consumer" fn-ref + "src.ai_client._dashscope_exception_from_response" "src\ai_client.py" 2750 "consumer" fn-ref + "src.multi_agent_conductor.update_usage" "src\multi_agent_conductor.py" 137 "consumer" fn-ref + "src.ai_client.set_agent_tools" "src\ai_client.py" 532 "consumer" fn-ref + "src.code_path_audit.is_hot_cold_split" "src\code_path_audit.py" 425 "consumer" fn-ref + "src.aggregate.group_files_by_dir" "src\aggregate.py" 86 "consumer" fn-ref + "src.ai_client.run_tier4_patch_generation" "src\ai_client.py" 3157 "consumer" fn-ref + "src.app_controller._symbol_resolution_result" "src\app_controller.py" 3506 "consumer" fn-ref + "src.ai_client.set_bias_profile" "src\ai_client.py" 611 "consumer" fn-ref + "src.ai_client._build_chunked_context_blocks" "src\ai_client.py" 1281 "consumer" fn-ref + "src.code_path_audit_cross_audit._normalize_path" "src\code_path_audit_cross_audit.py" 66 "consumer" fn-ref + "src.mcp_client.async_dispatch" "src\mcp_client.py" 1752 "consumer" fn-ref + "src.ai_client.run_tier4_patch_callback" "src\ai_client.py" 3115 "consumer" fn-ref + "src.orchestrator_pm.generate_tracks" "src\orchestrator_pm.py" 58 "consumer" fn-ref + "src.command_palette._close_palette" "src\command_palette.py" 107 "consumer" fn-ref + "src.markdown_helper._normalize_nested_list_endings" "src\markdown_helper.py" 228 "consumer" fn-ref + "src.mcp_client.list_directory_result" "src\mcp_client.py" 256 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 95 "consumer" fn-ref + "src.app_controller.current_provider" "src\app_controller.py" 2784 "consumer" fn-ref + "src.code_path_audit_cross_audit.map_finding_to_aggregates" "src\code_path_audit_cross_audit.py" 71 "consumer" fn-ref + "src.mcp_client.py_get_imports" "src\mcp_client.py" 1443 "consumer" fn-ref + "src.external_editor.launch_editor" "src\external_editor.py" 50 "consumer" fn-ref + "src.aggregate.compute_file_stats" "src\aggregate.py" 104 "consumer" fn-ref + "src.gui_2.render_discussion_entry_read_mode" "src\gui_2.py" 4824 "consumer" fn-ref + "src.mcp_client.search_files" "src\mcp_client.py" 177 "consumer" fn-ref + "src.code_path_audit.P3_pass" "src\code_path_audit.py" 280 "consumer" fn-ref + "src.mcp_client.ts_c_get_signature_result" "src\mcp_client.py" 481 "consumer" fn-ref + "src.code_path_audit_ssdl.render_organization_deductions" "src\code_path_audit_ssdl.py" 259 "consumer" fn-ref + "src.mcp_client.py_get_var_declaration_result" "src\mcp_client.py" 767 "consumer" fn-ref + "src.tool_presets.delete_bias_profile" "src\tool_presets.py" 129 "consumer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "consumer" fn-ref + "src.mcp_client.read_file_result" "src\mcp_client.py" 239 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 656 "consumer" fn-ref + "src.gui_2.render_path_field" "src\gui_2.py" 2494 "consumer" fn-ref + "src.mcp_client.ts_cpp_get_signature_result" "src\mcp_client.py" 561 "consumer" fn-ref + "src.mcp_client.derive_code_path" "src\mcp_client.py" 1491 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 416 "consumer" fn-ref + "src.shell_runner.run_powershell" "src\shell_runner.py" 58 "consumer" fn-ref + "src.app_controller._on_ai_stream" "src\app_controller.py" 4271 "consumer" fn-ref + "src.code_path_audit_cross_audit.aggregate_findings" "src\code_path_audit_cross_audit.py" 93 "consumer" fn-ref + "src.ai_client._send_minimax" "src\ai_client.py" 2616 "consumer" fn-ref + "src.summarize.build_summary_markdown" "src\summarize.py" 212 "consumer" fn-ref + "src.markdown_helper._normalize_bullet_delimiters" "src\markdown_helper.py" 215 "consumer" fn-ref + "src.app_controller._api_post_gui" "src\app_controller.py" 162 "consumer" fn-ref + "src.presets.delete_preset" "src\presets.py" 70 "consumer" fn-ref + "src.app_controller._handle_hide_patch_modal" "src\app_controller.py" 751 "consumer" fn-ref + "src.gui_2.ui_file_paths" "src\gui_2.py" 999 "consumer" fn-ref + "src.app_controller._api_confirm_action" "src\app_controller.py" 346 "consumer" fn-ref + "src.mcp_client.py_get_symbol_info" "src\mcp_client.py" 1335 "consumer" fn-ref + "src.code_path_audit_analysis.analyze_consumer_pattern" "src\code_path_audit_analysis.py" 164 "consumer" fn-ref + "src.app_controller._cb_load_track_result" "src\app_controller.py" 5013 "consumer" fn-ref + "src.mcp_client.py_get_hierarchy" "src\mcp_client.py" 1467 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 378 "consumer" fn-ref + "src.context_presets.delete_preset" "src\context_presets.py" 28 "consumer" fn-ref + "src.warmup._warmup_one" "src\warmup.py" 170 "consumer" fn-ref + "src.gui_2.truncate_entries" "src\gui_2.py" 173 "consumer" fn-ref + "src.api_hook_client.mutate_mma_dag" "src\api_hook_client.py" 576 "consumer" fn-ref + "src.mcp_tool_specs.get_tool_spec" "src\mcp_tool_specs.py" 67 "consumer" fn-ref + "src.aggregate.build_discussion_text" "src\aggregate.py" 373 "consumer" fn-ref + "src.presets.save_preset" "src\presets.py" 52 "consumer" fn-ref + "src.mcp_client.py_set_signature_result" "src\mcp_client.py" 714 "consumer" fn-ref + "src.api_hook_client.post_gui" "src\api_hook_client.py" 149 "consumer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "consumer" fn-ref + "src.performance_monitor.get_history" "src\performance_monitor.py" 269 "consumer" fn-ref + "src.imgui_scopes.menu" "src\imgui_scopes.py" 62 "consumer" fn-ref + "src.ai_client._send_qwen" "src\ai_client.py" 2773 "consumer" fn-ref + "src.command_palette.render_palette_modal" "src\command_palette.py" 128 "consumer" fn-ref + "src.api_hooks.__init__" "src\api_hooks.py" 133 "consumer" fn-ref + "src.fuzzy_anchor.create_slice" "src\fuzzy_anchor.py" 20 "consumer" fn-ref + "src.tool_presets._get_path" "src\tool_presets.py" 15 "consumer" fn-ref + "src.app_controller.get_symbol_definition" "src\app_controller.py" 69 "consumer" fn-ref + "src.markdown_helper._render_code_block" "src\markdown_helper.py" 307 "consumer" fn-ref + "src.api_hook_client.get_node_status" "src\api_hook_client.py" 532 "consumer" fn-ref + "src.beads_client.update_bead" "src\beads_client.py" 55 "consumer" fn-ref + "src.rag_engine.index_file" "src\rag_engine.py" 289 "consumer" fn-ref + "src.mcp_client.py_set_var_declaration" "src\mcp_client.py" 1419 "consumer" fn-ref + "src.app_controller._create_discussion" "src\app_controller.py" 4081 "consumer" fn-ref + "src.gui_2._simulate_save_preset" "src\gui_2.py" 547 "consumer" fn-ref + "src.app_controller.delete_session" "src\app_controller.py" 2889 "consumer" fn-ref + "src.aggregate.build_markdown" "src\aggregate.py" 475 "consumer" fn-ref + "src.multi_agent_conductor.confirm_execution" "src\multi_agent_conductor.py" 367 "consumer" fn-ref + "src.app_controller._handle_mma_step_approval" "src\app_controller.py" 648 "consumer" fn-ref + "src.imgui_scopes.tree_node_ex" "src\imgui_scopes.py" 243 "consumer" fn-ref + "src.mcp_client.py_check_syntax_result" "src\mcp_client.py" 880 "consumer" fn-ref + "src.code_path_audit.load_frequency_overrides" "src\code_path_audit.py" 494 "consumer" fn-ref + "src.history.push" "src\history.py" 80 "consumer" fn-ref + "src.app_controller.mma_status" "src\app_controller.py" 1610 "consumer" fn-ref + "src.app_controller._cb_save_workspace_profile" "src\app_controller.py" 2910 "consumer" fn-ref + "src.api_hooks._safe_controller_result" "src\api_hooks.py" 81 "consumer" fn-ref + "src.ai_client.get_token_stats" "src\ai_client.py" 3185 "consumer" fn-ref + "src.gui_2._on_warmup_complete_callback" "src\gui_2.py" 4979 "consumer" fn-ref + "src.rag_engine.delete_documents" "src\rag_engine.py" 374 "consumer" fn-ref + "src.ai_client._trim_anthropic_history" "src\ai_client.py" 1353 "consumer" fn-ref + "src.command_palette._compute_score" "src\command_palette.py" 75 "consumer" fn-ref + "src.mcp_client.ts_c_get_skeleton" "src\mcp_client.py" 1149 "consumer" fn-ref + "src.conductor_tech_lead.topological_sort" "src\conductor_tech_lead.py" 107 "consumer" fn-ref + "src.personas.save_persona" "src\personas.py" 49 "consumer" fn-ref + "src.app_controller._spawn_worker" "src\app_controller.py" 4829 "consumer" fn-ref + "src.markdown_helper.render_code" "src\markdown_helper.py" 370 "consumer" fn-ref + "src.app_controller._extract_tool_name" "src\app_controller.py" 4460 "consumer" fn-ref + "src.app_controller.__init__" "src\app_controller.py" 5172 "consumer" fn-ref + "src.events._make_serializable" "src\events.py" 170 "consumer" fn-ref + "src.multi_agent_conductor.worker_comms_callback" "src\multi_agent_conductor.py" 574 "consumer" fn-ref + "src.code_path_audit.add_field_access" "src\code_path_audit.py" 169 "consumer" fn-ref + "src.command_palette.register" "src\command_palette.py" 32 "consumer" fn-ref + "src.project_manager.branch_discussion" "src\project_manager.py" 453 "consumer" fn-ref + "src.summarize.summarise_file" "src\summarize.py" 159 "consumer" fn-ref + "src.models.mark_blocked" "src\models.py" 319 "consumer" fn-ref + "src.mcp_client.py_set_var_declaration_result" "src\mcp_client.py" 789 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 262 "consumer" fn-ref + "src.app_controller.approve_ticket" "src\app_controller.py" 4864 "consumer" fn-ref + "src.ai_client.run_discussion_compression" "src\ai_client.py" 3409 "consumer" fn-ref + "src.command_palette._is_subsequence" "src\command_palette.py" 67 "consumer" fn-ref + "src.file_cache.__init__" "src\file_cache.py" 78 "consumer" fn-ref + "src.app_controller.__init__" "src\app_controller.py" 78 "consumer" fn-ref + "src.paths.get_tracks_dir" "src\paths.py" 242 "consumer" fn-ref + "src.theme_2.get_role_tint" "src\theme_2.py" 204 "consumer" fn-ref + "src.app_controller._do_project_switch" "src\app_controller.py" 3146 "consumer" fn-ref + "src.patch_modal.apply_patch" "src\patch_modal.py" 57 "consumer" fn-ref + "src.thinking_parser.parse_thinking_trace" "src\thinking_parser.py" 8 "consumer" fn-ref + "src.app_controller._handle_show_track_proposal" "src\app_controller.py" 538 "consumer" fn-ref + "src.app_controller.load_context_preset" "src\app_controller.py" 3394 "consumer" fn-ref + "src.ai_client._run_tier4_patch_callback_result" "src\ai_client.py" 3089 "consumer" fn-ref + "src.code_path_audit_ssdl.detect_nil_check_pattern" "src\code_path_audit_ssdl.py" 84 "consumer" fn-ref + "src.mcp_client.py_get_imports_result" "src\mcp_client.py" 853 "consumer" fn-ref + "src.markdown_helper.render_unindented" "src\markdown_helper.py" 303 "consumer" fn-ref + "src.ai_client._set_tool_preset_result" "src\ai_client.py" 539 "consumer" fn-ref + "src.app_controller._handle_set_value" "src\app_controller.py" 562 "consumer" fn-ref + "src.code_path_audit_ssdl.count_branches_in_function" "src\code_path_audit_ssdl.py" 58 "consumer" fn-ref + "src.tool_presets.save_bias_profile" "src\tool_presets.py" 118 "consumer" fn-ref + "src.app_controller.parse_symbols" "src\app_controller.py" 63 "consumer" fn-ref + "src.api_hook_client.select_tab" "src\api_hook_client.py" 263 "consumer" fn-ref + "src.ai_client._run_tier4_analysis_result" "src\ai_client.py" 3042 "consumer" fn-ref + "src.multi_agent_conductor.confirm_spawn" "src\multi_agent_conductor.py" 391 "consumer" fn-ref + "src.imgui_scopes.child" "src\imgui_scopes.py" 9 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 747 "consumer" fn-ref + "src.aggregate.resolve_paths" "src\aggregate.py" 68 "consumer" fn-ref + "src.app_controller.inject_context" "src\app_controller.py" 2523 "consumer" fn-ref + "src.mcp_client.ts_c_get_code_outline" "src\mcp_client.py" 1163 "consumer" fn-ref + "src.mcp_client.py_get_definition" "src\mcp_client.py" 1347 "consumer" fn-ref + "src.mcp_client.set_file_slice" "src\mcp_client.py" 1120 "consumer" fn-ref + "src.models.get" "src\models.py" 349 "consumer" fn-ref + "src.mcp_client.search_files_result" "src\mcp_client.py" 284 "consumer" fn-ref + "src.ai_client._extract_minimax_reasoning" "src\ai_client.py" 2677 "consumer" fn-ref + "src.mcp_client.py_update_definition" "src\mcp_client.py" 1359 "consumer" fn-ref + "src.mcp_client.find_in_scope" "src\mcp_client.py" 1289 "consumer" fn-ref + "src.code_path_audit._atom" "src\code_path_audit.py" 865 "consumer" fn-ref + "src.commands.register" "src\commands.py" 39 "consumer" fn-ref + "src.mcp_client.handle_data" "src\mcp_client.py" 1572 "consumer" fn-ref + "src.theme_2.set_brightness" "src\theme_2.py" 91 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 575 "consumer" fn-ref + "src.rag_engine.__init__" "src\rag_engine.py" 105 "consumer" fn-ref + "src.app_controller._cb_start_track" "src\app_controller.py" 4662 "consumer" fn-ref + "src.code_path_audit_ssdl._resolve_filepath" "src\code_path_audit_ssdl.py" 31 "consumer" fn-ref + "src.workspace_manager._save_file" "src\workspace_manager.py" 81 "consumer" fn-ref + "src.app_controller._append_tool_log" "src\app_controller.py" 4381 "consumer" fn-ref + "src.mcp_client.ts_cpp_get_code_outline_result" "src\mcp_client.py" 530 "consumer" fn-ref + "src.diff_viewer.get_line_color" "src\diff_viewer.py" 117 "consumer" fn-ref + "src.app_controller._cb_delete_persona" "src\app_controller.py" 3689 "consumer" fn-ref + "src.context_presets.save_preset" "src\context_presets.py" 22 "consumer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "consumer" fn-ref + "src.app_controller._test_callback_func_write_to_file" "src\app_controller.py" 1932 "consumer" fn-ref + "src.external_editor.create_temp_modified_file" "src\external_editor.py" 147 "consumer" fn-ref + "src.commands.__getattr__" "src\commands.py" 43 "consumer" fn-ref + "src.events.emit" "src\events.py" 66 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 11 "consumer" fn-ref + "src.mcp_client._get_symbol_node" "src\mcp_client.py" 1285 "consumer" fn-ref + "src.summary_cache.get_file_hash" "src\summary_cache.py" 10 "consumer" fn-ref + "src.app_controller._apply_preset" "src\app_controller.py" 3616 "consumer" fn-ref + "src.app_controller._resolve_log_ref" "src\app_controller.py" 2145 "consumer" fn-ref + "src.openai_compatible._send_streaming" "src\openai_compatible.py" 133 "consumer" fn-ref + "src.ai_client._create_gemini_cache_result" "src\ai_client.py" 1706 "consumer" fn-ref + "src.app_controller._list_models_for_provider_result" "src\app_controller.py" 3544 "consumer" fn-ref + "src.app_controller._cb_ticket_retry" "src\app_controller.py" 4809 "consumer" fn-ref + "src.project_manager.load_track_state" "src\project_manager.py" 300 "consumer" fn-ref + "src.file_cache.walk" "src\file_cache.py" 549 "consumer" fn-ref + "src.command_palette._count_gaps" "src\command_palette.py" 95 "consumer" fn-ref + "src.mcp_client.web_search_result" "src\mcp_client.py" 1026 "consumer" fn-ref + "src.aggregate.build_tier3_context" "src\aggregate.py" 382 "consumer" fn-ref + "src.mcp_client.py_get_code_outline" "src\mcp_client.py" 1323 "consumer" fn-ref + "src.app_controller._handle_custom_callback" "src\app_controller.py" 543 "consumer" fn-ref + "src.ai_client._repair_minimax_history" "src\ai_client.py" 2462 "consumer" fn-ref + "src.gemini_cli_adapter.send" "src\gemini_cli_adapter.py" 61 "consumer" fn-ref + "src.theme_2.get_color" "src\theme_2.py" 153 "consumer" fn-ref + "src.diff_viewer.parse_diff" "src\diff_viewer.py" 49 "consumer" fn-ref + "src.log_registry.__getitem__" "src\log_registry.py" 93 "consumer" fn-ref + "src.app_controller.kill_worker" "src\app_controller.py" 4841 "consumer" fn-ref + "src.mcp_client.py_get_signature" "src\mcp_client.py" 1371 "consumer" fn-ref + "src.code_path_audit.build_pcg" "src\code_path_audit.py" 300 "consumer" fn-ref + "src.app_controller._handle_set_mma_status" "src\app_controller.py" 525 "consumer" fn-ref + "src.api_hooks._parse_float_result" "src\api_hooks.py" 100 "consumer" fn-ref + "src.mcp_client.py_get_docstring" "src\mcp_client.py" 1479 "consumer" fn-ref + "src.api_hook_client.kill_mma_worker" "src\api_hook_client.py" 561 "consumer" fn-ref + "src.ai_client._classify_anthropic_error" "src\ai_client.py" 315 "consumer" fn-ref + "src.app_controller.resolve_pending_action" "src\app_controller.py" 4442 "consumer" fn-ref + "src.external_editor.build_diff_command" "src\external_editor.py" 30 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 245 "consumer" fn-ref + "src.app_controller._record_startup_timeline_error" "src\app_controller.py" 1412 "consumer" fn-ref + "src.rag_engine.add_documents" "src\rag_engine.py" 196 "consumer" fn-ref + "src.history.jump_to_undo" "src\history.py" 129 "consumer" fn-ref + "src.mcp_client.derive_code_path_result" "src\mcp_client.py" 923 "consumer" fn-ref + "src.app_controller._on_api_event" "src\app_controller.py" 4260 "consumer" fn-ref + "src.project_manager.default_project" "src\project_manager.py" 123 "consumer" fn-ref + "src.mcp_client.get_file_slice_result" "src\mcp_client.py" 357 "consumer" fn-ref + "src.rag_engine._get_file_mtime_result" "src\rag_engine.py" 250 "consumer" fn-ref + "src.app_controller._api_delete_session" "src\app_controller.py" 385 "consumer" fn-ref + "src.code_path_audit_ssdl.render_ssdl_rollup" "src\code_path_audit_ssdl.py" 221 "consumer" fn-ref + "src.theme_2.reset_tone_mapping" "src\theme_2.py" 95 "consumer" fn-ref + "src.ai_client._should_cache_gemini_result" "src\ai_client.py" 1679 "consumer" fn-ref + "src.app_controller._refresh_api_metrics" "src\app_controller.py" 3074 "consumer" fn-ref + "src.command_palette._is_contiguous" "src\command_palette.py" 91 "consumer" fn-ref + "src.warmup._record_success" "src\warmup.py" 192 "consumer" fn-ref + "src.api_hooks._set_app_attr" "src\api_hooks.py" 72 "consumer" fn-ref + "src.app_controller._handle_clear_ask" "src\app_controller.py" 641 "consumer" fn-ref + "src.app_controller.rag_mcp_server" "src\app_controller.py" 1714 "consumer" fn-ref + "src.ai_client.set_base_system_prompt" "src\ai_client.py" 206 "consumer" fn-ref + "src.ai_client._set_minimax_provider_result" "src\ai_client.py" 398 "consumer" fn-ref + "src.api_hook_client.drag" "src\api_hook_client.py" 230 "consumer" fn-ref + "src.app_controller._fetch_models" "src\app_controller.py" 3565 "consumer" fn-ref + "src.ai_client._count_gemini_tokens_for_stats_result" "src\ai_client.py" 3163 "consumer" fn-ref + "src.gui_2._cb_kill_ticket" "src\gui_2.py" 1403 "consumer" fn-ref + "src.multi_agent_conductor._count_tokens" "src\multi_agent_conductor.py" 492 "consumer" fn-ref + "src.warmup._log_stderr" "src\warmup.py" 314 "consumer" fn-ref + "src.gui_2._ticket_id_max_int_result" "src\gui_2.py" 1694 "consumer" fn-ref + "src.ai_client.run_with_tool_loop" "src\ai_client.py" 833 "consumer" fn-ref + "src.api_hook_client.get_text_value" "src\api_hook_client.py" 204 "consumer" fn-ref + "src.ai_client.set_project_context_marker" "src\ai_client.py" 214 "consumer" fn-ref + "src.log_registry.from_dict" "src\log_registry.py" 113 "consumer" fn-ref + "src.file_cache.get_targeted_view" "src\file_cache.py" 371 "consumer" fn-ref + "src.markdown_helper.render" "src\markdown_helper.py" 128 "consumer" fn-ref + "src.markdown_table._split_row" "src\markdown_table.py" 36 "consumer" fn-ref + "src.code_path_audit_cross_audit._all_function_refs" "src\code_path_audit_cross_audit.py" 24 "consumer" fn-ref + "src.theme_nerv_fx.update" "src\theme_nerv_fx.py" 79 "consumer" fn-ref + "src.api_hooks_helpers._get_app_attr" "src\api_hooks_helpers.py" 3 "consumer" fn-ref + "src.tool_presets.delete_preset" "src\tool_presets.py" 81 "consumer" fn-ref + "src.aggregate.build_markdown_no_history" "src\aggregate.py" 366 "consumer" fn-ref + "src.mcp_client.edit_file_result" "src\mcp_client.py" 312 "consumer" fn-ref + "src.app_controller.current_model" "src\app_controller.py" 2800 "consumer" fn-ref + "src.app_controller.confirm_action" "src\app_controller.py" 2877 "consumer" fn-ref + "src.beads_client._write_beads" "src\beads_client.py" 82 "consumer" fn-ref + "src.outline_tool.outline" "src\outline_tool.py" 44 "consumer" fn-ref + "src.summarize._summarise_markdown" "src\summarize.py" 105 "consumer" fn-ref + "src.gui_2._test_callback_func_write_to_file" "src\gui_2.py" 1030 "consumer" fn-ref + "src.diff_viewer.parse_hunk_header" "src\diff_viewer.py" 27 "consumer" fn-ref + "src.app_controller._cb_ticket_skip" "src\app_controller.py" 4819 "consumer" fn-ref + "src.file_cache.get_skeleton" "src\file_cache.py" 207 "consumer" fn-ref + "src.mcp_client._ast_get_definition" "src\mcp_client.py" 424 "consumer" fn-ref + "src.app_controller._api_get_key" "src\app_controller.py" 100 "consumer" fn-ref + "src.rag_engine.delete_documents_by_path" "src\rag_engine.py" 390 "consumer" fn-ref + "src.ai_client._repair_anthropic_history" "src\ai_client.py" 1381 "consumer" fn-ref + "src.vendor_capabilities.list_models_for_vendor" "src\vendor_capabilities.py" 44 "consumer" fn-ref + "src.fuzzy_anchor.resolve_slice" "src\fuzzy_anchor.py" 40 "consumer" fn-ref + "src.markdown_helper.render" "src\markdown_helper.py" 398 "consumer" fn-ref + "src.app_controller._handle_drag" "src\app_controller.py" 613 "consumer" fn-ref + "src.rag_engine.search" "src\rag_engine.py" 349 "consumer" fn-ref + "src.markdown_helper._on_open_link" "src\markdown_helper.py" 108 "consumer" fn-ref + "src.cost_tracker.estimate_cost" "src\cost_tracker.py" 66 "consumer" fn-ref + "src.mcp_client.py_get_code_outline_result" "src\mcp_client.py" 612 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1072 "consumer" fn-ref + "src.performance_monitor.scope" "src\performance_monitor.py" 281 "consumer" fn-ref + "src.app_controller._rag_search_result" "src\app_controller.py" 3488 "consumer" fn-ref + "src.models.__getattr__" "src\models.py" 271 "consumer" fn-ref + "src.session_logger.log_comms" "src\session_logger.py" 152 "consumer" fn-ref + "src.code_path_audit_ssdl.compute_effective_codepaths" "src\code_path_audit_ssdl.py" 39 "consumer" fn-ref + "src.code_path_audit.dominant_pattern" "src\code_path_audit.py" 433 "consumer" fn-ref + "src.paths.get_track_state_dir" "src\paths.py" 246 "consumer" fn-ref + "src.mcp_client.configure" "src\mcp_client.py" 108 "consumer" fn-ref + "src.theme_2.apply_syntax_palette" "src\theme_2.py" 359 "consumer" fn-ref + "src.startup_profiler.phase" "src\startup_profiler.py" 49 "consumer" fn-ref + "src.app_controller._deserialize_active_track_result" "src\app_controller.py" 2195 "consumer" fn-ref + "src.log_pruner.__init__" "src\log_pruner.py" 18 "consumer" fn-ref + "src.rag_engine._chunk_text" "src\rag_engine.py" 210 "consumer" fn-ref + "src.file_cache.deep_search" "src\file_cache.py" 858 "consumer" fn-ref + "src.app_controller.rag_source" "src\app_controller.py" 1680 "consumer" fn-ref + "src.markdown_table.parse_tables" "src\markdown_table.py" 47 "consumer" fn-ref + "src.gui_2._load_fonts_main_result" "src\gui_2.py" 7578 "consumer" fn-ref + "src.api_hook_client.right_click" "src\api_hook_client.py" 237 "consumer" fn-ref + "src.aggregate.build_discussion_section" "src\aggregate.py" 125 "consumer" fn-ref + "src.gui_2._on_warmup_complete_callback_result" "src\gui_2.py" 1609 "consumer" fn-ref + "src.app_controller.start_services" "src\app_controller.py" 2560 "consumer" fn-ref + "src.api_hook_client.spawn_mma_worker" "src\api_hook_client.py" 553 "consumer" fn-ref + "src.code_path_audit.P2_pass" "src\code_path_audit.py" 264 "consumer" fn-ref + "src.imgui_scopes.window" "src\imgui_scopes.py" 260 "consumer" fn-ref + "src.mcp_client.web_search" "src\mcp_client.py" 1578 "consumer" fn-ref + "src.log_registry.get" "src\log_registry.py" 105 "consumer" fn-ref + "src.code_path_audit.detect_frequency_from_entry_point" "src\code_path_audit.py" 478 "consumer" fn-ref + "src.commands._toggle_attr" "src\commands.py" 70 "consumer" fn-ref + "src.mcp_client.handle_starttag" "src\mcp_client.py" 1527 "consumer" fn-ref + "src.gui_2.render_thinking_trace" "src\gui_2.py" 4672 "consumer" fn-ref + "src.api_hooks.__init__" "src\api_hooks.py" 857 "consumer" fn-ref + "src.api_hook_client.click" "src\api_hook_client.py" 223 "consumer" fn-ref + "src.conductor_tech_lead.generate_tickets" "src\conductor_tech_lead.py" 45 "consumer" fn-ref + "src.gui_2.__getattr__" "src\gui_2.py" 73 "consumer" fn-ref + "src.app_controller._handle_select_list_item" "src\app_controller.py" 628 "consumer" fn-ref + "src.theme_models.from_dict" "src\theme_models.py" 100 "consumer" fn-ref + "src.ai_client._add_history_cache_breakpoint" "src\ai_client.py" 1299 "consumer" fn-ref + "src.session_logger.reset_session" "src\session_logger.py" 135 "consumer" fn-ref + "src.personas._save_file" "src\personas.py" 98 "consumer" fn-ref + "src.code_path_audit_ssdl.render_ssdl_sketch" "src\code_path_audit_ssdl.py" 175 "consumer" fn-ref + "src.file_cache.get_curated_view" "src\file_cache.py" 291 "consumer" fn-ref + "src.tool_presets._write_raw" "src\tool_presets.py" 37 "consumer" fn-ref + "src.file_cache.deep_search" "src\file_cache.py" 705 "consumer" fn-ref + "src.api_hooks_helpers._has_app_attr" "src\api_hooks_helpers.py" 13 "consumer" fn-ref + "src.aggregate.build_screenshots_section" "src\aggregate.py" 142 "consumer" fn-ref + "src.ai_client._send_gemini_cli" "src\ai_client.py" 2019 "consumer" fn-ref + "src.imgui_scopes.id" "src\imgui_scopes.py" 37 "consumer" fn-ref + "src.markdown_helper._normalize_list_continuations" "src\markdown_helper.py" 254 "consumer" fn-ref + "src.gemini_cli_adapter.__init__" "src\gemini_cli_adapter.py" 51 "consumer" fn-ref + "src.app_controller._cb_apply_view_preset" "src\app_controller.py" 3714 "consumer" fn-ref + "src.history.redo" "src\history.py" 103 "consumer" fn-ref + "src.code_path_audit.compute_result_coverage" "src\code_path_audit.py" 741 "consumer" fn-ref + "src.summary_cache.__init__" "src\summary_cache.py" 22 "consumer" fn-ref + "src.api_hook_client._make_request" "src\api_hook_client.py" 65 "consumer" fn-ref + "src.app_controller._handle_refresh_from_project" "src\app_controller.py" 741 "consumer" fn-ref + "src.gui_2._set_context_files" "src\gui_2.py" 542 "consumer" fn-ref + "src.theme_2.apply" "src\theme_2.py" 213 "consumer" fn-ref + "src.app_controller._handle_ask" "src\app_controller.py" 635 "consumer" fn-ref + "src.log_registry.set_session_start_time" "src\log_registry.py" 283 "consumer" fn-ref + "src.code_path_audit._resolve_aliases" "src\code_path_audit.py" 224 "consumer" fn-ref + "src.ai_client._content_block_to_dict" "src\ai_client.py" 1200 "consumer" fn-ref + "src.project_manager.entry_to_str" "src\project_manager.py" 49 "consumer" fn-ref + "src.markdown_table._is_table_at" "src\markdown_table.py" 42 "consumer" fn-ref + "src.ai_client._list_gemini_models_result" "src\ai_client.py" 1626 "consumer" fn-ref + "src.code_path_audit.run_audit" "src\code_path_audit.py" 1217 "consumer" fn-ref + "src.gui_2.render_text_viewer" "src\gui_2.py" 154 "consumer" fn-ref + "src.mcp_client.get_tree_result" "src\mcp_client.py" 992 "consumer" fn-ref + "src.markdown_helper.render_code" "src\markdown_helper.py" 407 "consumer" fn-ref + "src.mcp_client.ts_cpp_get_definition_result" "src\mcp_client.py" 546 "consumer" fn-ref + "src.file_cache.get_cached_tree" "src\file_cache.py" 100 "consumer" fn-ref + "src.mcp_client.async_dispatch" "src\mcp_client.py" 1939 "consumer" fn-ref + "src.app_controller._cb_delete_bias_profile" "src\app_controller.py" 3678 "consumer" fn-ref + "src.mcp_client.py_get_class_summary_result" "src\mcp_client.py" 737 "consumer" fn-ref + "src.code_path_audit.P1_pass" "src\code_path_audit.py" 249 "consumer" fn-ref + "src.session_logger.log_api_hook" "src\session_logger.py" 140 "consumer" fn-ref + "src.code_path_audit_analysis.aggregate_pattern_from_consumers" "src\code_path_audit_analysis.py" 181 "consumer" fn-ref + "src.theme_models.with_scope" "src\theme_models.py" 127 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 630 "consumer" fn-ref + "src.mcp_client.get_file_summary" "src\mcp_client.py" 1093 "consumer" fn-ref + "src.imgui_scopes.tab_item" "src\imgui_scopes.py" 204 "consumer" fn-ref + "src.openai_compatible._classify_openai_compatible_error" "src\openai_compatible.py" 58 "consumer" fn-ref "src.models.from_dict" "src\models.py" 949 "consumer" fn-ref + "src.app_controller._on_tool_log" "src\app_controller.py" 4230 "consumer" fn-ref + "src.personas.get_persona_scope" "src\personas.py" 61 "consumer" fn-ref + "src.file_cache.update_definition" "src\file_cache.py" 790 "consumer" fn-ref + "src.app_controller._cb_load_workspace_profile" "src\app_controller.py" 2930 "consumer" fn-ref + "src.code_path_audit.to_dsl_v2" "src\code_path_audit.py" 871 "consumer" fn-ref + "src.api_hook_client.wait_for_event" "src\api_hook_client.py" 136 "consumer" fn-ref + "src.summarize._summarise_python" "src\summarize.py" 31 "consumer" fn-ref + "src.code_path_audit.compute_decomposition_cost" "src\code_path_audit.py" 627 "consumer" fn-ref + "src.app_controller.__getattr__" "src\app_controller.py" 1273 "consumer" fn-ref + "src.mcp_client.py_get_skeleton_result" "src\mcp_client.py" 595 "consumer" fn-ref + "src.mcp_client.handle_data" "src\mcp_client.py" 1551 "consumer" fn-ref + "src.file_cache.get_definition" "src\file_cache.py" 538 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 39 "consumer" fn-ref + "src.mcp_client._ast_get_signature" "src\mcp_client.py" 428 "consumer" fn-ref + "src.file_cache._get_mtime_safe" "src\file_cache.py" 48 "consumer" fn-ref + "src.code_path_audit_analysis.analyze_producer_size" "src\code_path_audit_analysis.py" 117 "consumer" fn-ref + "src.imgui_scopes.table" "src\imgui_scopes.py" 169 "consumer" fn-ref + "src.mcp_client.get_tree" "src\mcp_client.py" 1505 "consumer" fn-ref + "src.code_path_audit.code_path_audit_v2" "src\code_path_audit.py" 1349 "consumer" fn-ref + "src.code_path_audit_cross_audit._aggregate_for_fqname" "src\code_path_audit_cross_audit.py" 51 "consumer" fn-ref + "src.project_manager.clean_nones" "src\project_manager.py" 220 "consumer" fn-ref + "src.mcp_client.py_set_signature" "src\mcp_client.py" 1383 "consumer" fn-ref + "src.ai_client.set_custom_system_prompt" "src\ai_client.py" 201 "consumer" fn-ref + "src.ai_client._strip_stale_file_refreshes" "src\ai_client.py" 1253 "consumer" fn-ref + "src.gui_2.__setattr__" "src\gui_2.py" 749 "consumer" fn-ref + "src.models._clean_nones" "src\models.py" 179 "consumer" fn-ref + "src.markdown_helper.detect_language" "src\markdown_helper.py" 378 "consumer" fn-ref + "src.mcp_client.fetch_url" "src\mcp_client.py" 1590 "consumer" fn-ref + "src.mcp_client.handle_endtag" "src\mcp_client.py" 1568 "consumer" fn-ref + "src.performance_monitor._add_to_history" "src\performance_monitor.py" 140 "consumer" fn-ref + "src.project_manager.promote_take" "src\project_manager.py" 471 "consumer" fn-ref + "src.project_manager.save_track_state" "src\project_manager.py" 289 "consumer" fn-ref + "src.app_controller._init_ai_and_hooks" "src\app_controller.py" 2718 "consumer" fn-ref + "src.mcp_client.py_get_docstring_result" "src\mcp_client.py" 898 "consumer" fn-ref + "src.outline_tool.get_outline" "src\outline_tool.py" 127 "consumer" fn-ref + "src.ai_client._append_comms" "src\ai_client.py" 257 "consumer" fn-ref + "src.models.parse_history_entries" "src\models.py" 214 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 295 "consumer" fn-ref + "src.project_manager.str_to_entry" "src\project_manager.py" 75 "consumer" fn-ref + "src.mcp_client.set_file_slice_result" "src\mcp_client.py" 374 "consumer" fn-ref + "src.api_hook_client.request_confirmation" "src\api_hook_client.py" 244 "consumer" fn-ref + "src.code_path_audit_analysis.compute_real_decomposition_cost" "src\code_path_audit_analysis.py" 276 "consumer" fn-ref + "src.ai_client._classify_deepseek_error" "src\ai_client.py" 349 "consumer" fn-ref + "src.app_controller._report_worker_error" "src\app_controller.py" 3528 "consumer" fn-ref + "src.paths.get_conductor_dir" "src\paths.py" 271 "consumer" fn-ref + "src.events.put" "src\events.py" 100 "consumer" fn-ref + "src.hot_reloader.capture_state" "src\hot_reloader.py" 33 "consumer" fn-ref + "src.gui_2.__init__" "src\gui_2.py" 7539 "consumer" fn-ref + "src.gui_2.render_discussion_entry" "src\gui_2.py" 4720 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 603 "consumer" fn-ref + "src.code_path_audit.parse_dsl_v2" "src\code_path_audit.py" 1034 "consumer" fn-ref + "src.app_controller._handle_ticket_completed" "src\app_controller.py" 710 "consumer" fn-ref + "src.app_controller._cb_create_track" "src\app_controller.py" 4944 "consumer" fn-ref + "src.mcp_client.py_check_syntax" "src\mcp_client.py" 1455 "consumer" fn-ref + "src.mcp_client.edit_file" "src\mcp_client.py" 1079 "consumer" fn-ref + "src.app_controller._confirm_and_run" "src\app_controller.py" 4402 "consumer" fn-ref + "src.project_manager.parse_ts" "src\project_manager.py" 42 "consumer" fn-ref + "src.startup_profiler._log_phase_output" "src\startup_profiler.py" 17 "consumer" fn-ref + "src.app_controller._set_mcp_config_json_result" "src\app_controller.py" 1745 "consumer" fn-ref + "src.app_controller.get_api_key" "src\app_controller.py" 2823 "consumer" fn-ref + "src.mcp_client._ast_get_skeleton" "src\mcp_client.py" 416 "consumer" fn-ref + "src.code_path_audit_analysis.estimate_struct_size" "src\code_path_audit_analysis.py" 257 "consumer" fn-ref + "src.code_path_audit.run_all_cross_audit_reads" "src\code_path_audit.py" 823 "consumer" fn-ref + "src.imgui_scopes.popup_modal" "src\imgui_scopes.py" 122 "consumer" fn-ref + "src.app_controller.mcp_config_json" "src\app_controller.py" 1737 "consumer" fn-ref + "src.app_controller._handle_set_ai_status" "src\app_controller.py" 521 "consumer" fn-ref + "src.app_controller._handle_mma_stream" "src\app_controller.py" 529 "consumer" fn-ref + "src.mcp_client._ast_get_code_outline" "src\mcp_client.py" 420 "consumer" fn-ref + "src.vendor_capabilities.get_capabilities" "src\vendor_capabilities.py" 37 "consumer" fn-ref + "src.api_hook_client.set_value" "src\api_hook_client.py" 212 "consumer" fn-ref + "src.multi_agent_conductor.kill_worker" "src\multi_agent_conductor.py" 174 "consumer" fn-ref + "src.api_hook_client.inject_context" "src\api_hook_client.py" 484 "consumer" fn-ref + "src.imgui_scopes.node" "src\imgui_scopes.py" 93 "consumer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "consumer" fn-ref + "src.app_controller.post_api_session" "src\app_controller.py" 2850 "consumer" fn-ref + "src.mcp_client.dispatch" "src\mcp_client.py" 1772 "consumer" fn-ref + "src.session_logger.log_tool_output" "src\session_logger.py" 211 "consumer" fn-ref + "src.app_controller._cb_save_bias_profile" "src\app_controller.py" 3671 "consumer" fn-ref + "src.ai_client.set_provider" "src\ai_client.py" 417 "consumer" fn-ref + "src.code_path_audit.add_producer" "src\code_path_audit.py" 163 "consumer" fn-ref + "src.app_controller._on_performance_alert" "src\app_controller.py" 3038 "consumer" fn-ref + "src.file_cache.get_code_outline" "src\file_cache.py" 748 "consumer" fn-ref + "src.file_cache.parse" "src\file_cache.py" 93 "consumer" fn-ref + "src.gui_2._render_ast_inspector_outline_result" "src\gui_2.py" 7863 "consumer" fn-ref + "src.log_registry.__init__" "src\log_registry.py" 142 "consumer" fn-ref + "src.rag_engine._read_file_content_result" "src\rag_engine.py" 278 "consumer" fn-ref + "src.app_controller._start_track_logic_result" "src\app_controller.py" 4728 "consumer" fn-ref "src.models.from_dict" "src\models.py" 982 "consumer" fn-ref + "src.api_hook_client.__init__" "src\api_hook_client.py" 58 "consumer" fn-ref + "src.hot_reloader.reload" "src\hot_reloader.py" 42 "consumer" fn-ref + "src.mcp_client.get_git_diff" "src\mcp_client.py" 1132 "consumer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "consumer" fn-ref + "src.rag_engine.__init__" "src\rag_engine.py" 60 "consumer" fn-ref + "src.summary_cache.get_summary" "src\summary_cache.py" 57 "consumer" fn-ref + "src.ai_client.send" "src\ai_client.py" 3208 "consumer" fn-ref + "src.file_cache.get_signature" "src\file_cache.py" 636 "consumer" fn-ref + "src.api_hook_client.push_event" "src\api_hook_client.py" 156 "consumer" fn-ref + "src.mcp_client.ts_cpp_get_code_outline" "src\mcp_client.py" 1231 "consumer" fn-ref + "src.mcp_client.ts_c_update_definition" "src\mcp_client.py" 1201 "consumer" fn-ref + "src.app_controller._handle_refresh_api_metrics" "src\app_controller.py" 517 "consumer" fn-ref + "src.multi_agent_conductor._push_state" "src\multi_agent_conductor.py" 192 "consumer" fn-ref + "src.ai_client._truncate_tool_output" "src\ai_client.py" 1047 "consumer" fn-ref + "src.gui_2.render_tier_stream_panel" "src\gui_2.py" 6905 "consumer" fn-ref + "src.mcp_client._build_tree" "src\mcp_client.py" 1002 "consumer" fn-ref + "src.api_hook_client.get_indicator_state" "src\api_hook_client.py" 303 "consumer" fn-ref + "src.personas._get_path" "src\personas.py" 16 "consumer" fn-ref + "src.app_controller._on_warmup_complete_for_timeline" "src\app_controller.py" 1504 "consumer" fn-ref + "src.project_manager.get_git_commit" "src\project_manager.py" 104 "consumer" fn-ref + "src.mcp_client.py_get_signature_result" "src\mcp_client.py" 684 "consumer" fn-ref + "src.project_manager.format_discussion" "src\project_manager.py" 69 "consumer" fn-ref + "src.app_controller.set_vendor_quota" "src\app_controller.py" 3101 "consumer" fn-ref + "src.mcp_client.py_get_skeleton" "src\mcp_client.py" 1311 "consumer" fn-ref + "src.events.on" "src\events.py" 54 "consumer" fn-ref + "src.mcp_client.py_get_var_declaration" "src\mcp_client.py" 1407 "consumer" fn-ref + "src.app_controller._switch_project" "src\app_controller.py" 3193 "consumer" fn-ref + "src.thinking_parser.extract_colon_blocks" "src\thinking_parser.py" 41 "consumer" fn-ref + "src.performance_monitor.start_component" "src\performance_monitor.py" 207 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 683 "consumer" fn-ref + "src.mcp_client.py_find_usages_result" "src\mcp_client.py" 811 "consumer" fn-ref + "src.app_controller._load_project_from_path_result" "src\app_controller.py" 2446 "consumer" fn-ref + "src.qwen_adapter.build_dashscope_tools" "src\qwen_adapter.py" 13 "consumer" fn-ref + "src.ai_client._execute_tool_calls_concurrently" "src\ai_client.py" 758 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 712 "consumer" fn-ref + "src.gui_2._save_context_preset_force" "src\gui_2.py" 366 "consumer" fn-ref + "src.ai_client._repair_deepseek_history" "src\ai_client.py" 2138 "consumer" fn-ref + "src.command_palette._execute" "src\command_palette.py" 116 "consumer" fn-ref + "src.models.mark_manual_block" "src\models.py" 326 "consumer" fn-ref + "src.gui_2._set_external_editor_default" "src\gui_2.py" 1242 "consumer" fn-ref + "src.personas.delete_persona" "src\personas.py" 76 "consumer" fn-ref + "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 945 "consumer" fn-ref + "src.api_hook_client.wait_for_project_switch" "src\api_hook_client.py" 389 "consumer" fn-ref + "src.multi_agent_conductor.parse_json_tickets" "src\multi_agent_conductor.py" 208 "consumer" fn-ref + "src.theme_2.render_post_fx" "src\theme_2.py" 401 "consumer" fn-ref + "src.dag_engine.update_task_status" "src\dag_engine.py" 217 "consumer" fn-ref + "src.app_controller._on_sigint" "src\app_controller.py" 780 "consumer" fn-ref + "src.ai_client.set_tool_preset" "src\ai_client.py" 576 "consumer" fn-ref + "src.openai_compatible._send_blocking" "src\openai_compatible.py" 116 "consumer" fn-ref + "src.aggregate.find_next_increment" "src\aggregate.py" 50 "consumer" fn-ref + "src.gui_2.render_heavy_text" "src\gui_2.py" 6400 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 64 "consumer" fn-ref + "src.multi_agent_conductor.clutch_callback" "src\multi_agent_conductor.py" 558 "consumer" fn-ref + "src.gui_2.__init__" "src\gui_2.py" 52 "consumer" fn-ref + "src.hot_reloader.restore_state" "src\hot_reloader.py" 37 "consumer" fn-ref + "src.api_hook_client.get_value" "src\api_hook_client.py" 172 "consumer" fn-ref + "src.summarize._summarise_toml" "src\summarize.py" 78 "consumer" fn-ref + "src.app_controller._start_track_logic" "src\app_controller.py" 4721 "consumer" fn-ref + "src.app_controller._switch_discussion" "src\app_controller.py" 3749 "consumer" fn-ref + "src.mcp_client._send_request" "src\mcp_client.py" 1678 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 189 "consumer" fn-ref + "src.app_controller._handle_right_click" "src\app_controller.py" 621 "consumer" fn-ref + "src.app_controller._handle_show_patch_modal" "src\app_controller.py" 745 "consumer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "consumer" fn-ref + "src.theme_models.load_themes_from_toml" "src\theme_models.py" 200 "consumer" fn-ref + "src.app_controller._cb_delete_view_preset" "src\app_controller.py" 3724 "consumer" fn-ref + "src.ai_client._invalidate_token_estimate" "src\ai_client.py" 1240 "consumer" fn-ref + "src.app_controller.get_session" "src\app_controller.py" 2883 "consumer" fn-ref + "src.ai_client._send_grok" "src\ai_client.py" 2530 "consumer" fn-ref + "src.mcp_client.get_git_diff_result" "src\mcp_client.py" 397 "consumer" fn-ref + "src.api_hooks.log_message" "src\api_hooks.py" 853 "consumer" fn-ref + "src.theme_2.save_to_config" "src\theme_2.py" 302 "consumer" fn-ref + "src.warmup._fire_callback" "src\warmup.py" 328 "consumer" fn-ref + "src.performance_monitor._get_avg" "src\performance_monitor.py" 155 "consumer" fn-ref + "src.mcp_client.ts_cpp_update_definition_result" "src\mcp_client.py" 576 "consumer" fn-ref + "src.app_controller.rag_mcp_tool" "src\app_controller.py" 1721 "consumer" fn-ref + "src.mcp_client.ts_c_get_skeleton_result" "src\mcp_client.py" 436 "consumer" fn-ref + "src.ai_client._send_anthropic" "src\ai_client.py" 1405 "consumer" fn-ref + "src.app_controller._cb_delete_workspace_profile" "src\app_controller.py" 2921 "consumer" fn-ref + "src.gui_2._cb_block_ticket" "src\gui_2.py" 1407 "consumer" fn-ref + "src.mcp_client._resolve_and_check_result" "src\mcp_client.py" 216 "consumer" fn-ref + "src.mcp_client.ts_c_get_definition" "src\mcp_client.py" 1177 "consumer" fn-ref + "src.code_path_audit.load_memory_dim_overrides" "src\code_path_audit.py" 378 "consumer" fn-ref + "src.gui_2._render_window_if_open" "src\gui_2.py" 1113 "consumer" fn-ref + "src.ai_client._parse_tool_args_result" "src\ai_client.py" 741 "consumer" fn-ref + "src.mcp_client.ts_c_get_signature" "src\mcp_client.py" 1189 "consumer" fn-ref + "src.performance_monitor.end_component" "src\performance_monitor.py" 216 "consumer" fn-ref + "src.api_hooks._has_app_attr" "src\api_hooks.py" 66 "consumer" fn-ref + "src.markdown_helper._is_likely_lang_tag" "src\markdown_helper.py" 375 "consumer" fn-ref + "src.ai_client._send_deepseek" "src\ai_client.py" 2165 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 124 "consumer" fn-ref + "src.openai_compatible._to_typed_tool_call" "src\openai_compatible.py" 43 "consumer" fn-ref + "src.code_path_audit.add_consumer" "src\code_path_audit.py" 166 "consumer" fn-ref + "src.ai_client.run_subagent_summarization" "src\ai_client.py" 3356 "consumer" fn-ref + "src.hot_reloader.reload_all" "src\hot_reloader.py" 69 "consumer" fn-ref + "src.api_hooks_helpers._set_app_attr" "src\api_hooks_helpers.py" 19 "consumer" fn-ref + "src.mcp_client.py_get_definition_result" "src\mcp_client.py" 646 "consumer" fn-ref + "src.gui_2._populate_auto_slices_outline_result" "src\gui_2.py" 7926 "consumer" fn-ref + "src.ai_client._list_minimax_models_result" "src\ai_client.py" 2436 "consumer" fn-ref + "src.mcp_client.list_directory" "src\mcp_client.py" 191 "consumer" fn-ref + "src.multi_agent_conductor.run_worker_lifecycle" "src\multi_agent_conductor.py" 433 "consumer" fn-ref + "src.mcp_client.ts_cpp_get_skeleton_result" "src\mcp_client.py" 515 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 454 "consumer" fn-ref + "src.performance_monitor.__exit__" "src\performance_monitor.py" 77 "consumer" fn-ref + "src.theme_2._get_tm" "src\theme_2.py" 84 "consumer" fn-ref + "src.synthesis_formatter.format_takes_diff" "src\synthesis_formatter.py" 1 "consumer" fn-ref + "src.openai_compatible.send_openai_compatible" "src\openai_compatible.py" 80 "consumer" fn-ref + "src.ai_client._try_warm_sdk_result" "src\ai_client.py" 298 "consumer" fn-ref + "src.ai_client._set_bias_profile_result" "src\ai_client.py" 590 "consumer" fn-ref + "src.theme_2._tone_map" "src\theme_2.py" 100 "consumer" fn-ref + "src.markdown_helper._get_language_id" "src\markdown_helper.py" 26 "consumer" fn-ref + "src.fuzzy_anchor.get_context" "src\fuzzy_anchor.py" 9 "consumer" fn-ref + "src.gui_2.render_selectable_label" "src\gui_2.py" 161 "consumer" fn-ref + "src.history.from_dict" "src\history.py" 45 "consumer" fn-ref + "src.app_controller._handle_mma_respond" "src\app_controller.py" 4972 "consumer" fn-ref + "src.ai_client._trim_minimax_history" "src\ai_client.py" 2482 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 143 "consumer" fn-ref + "src.mcp_client.handle_endtag" "src\mcp_client.py" 1536 "consumer" fn-ref + "src.patch_modal.request_patch_approval" "src\patch_modal.py" 19 "consumer" fn-ref + "src.code_path_audit_analysis._field_names_for_aggregate" "src\code_path_audit_analysis.py" 32 "consumer" fn-ref + "src.code_path_audit_analysis._analyze_function_field_accesses" "src\code_path_audit_analysis.py" 41 "consumer" fn-ref + "src.summarize._summarise_generic" "src\summarize.py" 121 "consumer" fn-ref + "src.code_path_audit.generate_rationale" "src\code_path_audit.py" 606 "consumer" fn-ref + "src.summarize.summarise_items" "src\summarize.py" 194 "consumer" fn-ref + "src.file_cache.deep_search" "src\file_cache.py" 608 "consumer" fn-ref + "src.provider_state.get_history" "src\provider_state.py" 57 "consumer" fn-ref + "src.session_logger.log_cli_call" "src\session_logger.py" 234 "consumer" fn-ref + "src.log_registry.update_session_metadata" "src\log_registry.py" 249 "consumer" fn-ref + "src.app_controller._api_post_api_session" "src\app_controller.py" 178 "consumer" fn-ref + "src.code_path_audit_ssdl.suggest_defusing_technique" "src\code_path_audit_ssdl.py" 128 "consumer" fn-ref + "src.gemini_cli_adapter.count_tokens" "src\gemini_cli_adapter.py" 191 "consumer" fn-ref + "src.gui_2._cb_unblock_ticket" "src\gui_2.py" 1426 "consumer" fn-ref + "src.theme_models.load_themes_from_dir" "src\theme_models.py" 181 "consumer" fn-ref + "src.external_editor.get_editor" "src\external_editor.py" 22 "consumer" fn-ref + "src.ai_client._send_llama" "src\ai_client.py" 2858 "consumer" fn-ref + "src.ai_client._classify_gemini_error" "src\ai_client.py" 333 "consumer" fn-ref + "src.app_controller._execute_gui_task_result" "src\app_controller.py" 1866 "consumer" fn-ref + "src.gui_2.request_patch_from_tier4_result" "src\gui_2.py" 8089 "consumer" fn-ref + "src.imgui_scopes.popup" "src\imgui_scopes.py" 106 "consumer" fn-ref + "src.multi_agent_conductor.spawn" "src\multi_agent_conductor.py" 64 "consumer" fn-ref + "src.app_controller._handle_ticket_started" "src\app_controller.py" 689 "consumer" fn-ref + "src.project_manager.load_track_history" "src\project_manager.py" 314 "consumer" fn-ref + "src.ai_client._get_gemini_history_list" "src\ai_client.py" 1795 "consumer" fn-ref + "src.command_palette._starts_at_word_boundary" "src\command_palette.py" 85 "consumer" fn-ref + "src.mcp_client.py_find_usages" "src\mcp_client.py" 1431 "consumer" fn-ref + "src.multi_agent_conductor.run" "src\multi_agent_conductor.py" 240 "consumer" fn-ref + "src.mcp_client.ts_c_update_definition_result" "src\mcp_client.py" 496 "consumer" fn-ref + "src.theme_models.load_theme_file" "src\theme_models.py" 166 "consumer" fn-ref + "src.app_controller.post_gui" "src\app_controller.py" 2841 "consumer" fn-ref + "src.log_registry.register_session" "src\log_registry.py" 223 "consumer" fn-ref + "src.aggregate.run" "src\aggregate.py" 479 "consumer" fn-ref + "src.gui_2.load_context_preset" "src\gui_2.py" 972 "consumer" fn-ref + "src.mcp_client.py_get_class_summary" "src\mcp_client.py" 1395 "consumer" fn-ref + "src.models._save_config_to_disk" "src\models.py" 199 "consumer" fn-ref + "src.api_hook_client.post_session" "src\api_hook_client.py" 117 "consumer" fn-ref + "src.performance_monitor.__init__" "src\performance_monitor.py" 71 "consumer" fn-ref + "src.app_controller._cb_load_track" "src\app_controller.py" 5000 "consumer" fn-ref + "src.warmup._log_canary" "src\warmup.py" 266 "consumer" fn-ref + "src.app_controller._cb_save_persona" "src\app_controller.py" 3682 "consumer" fn-ref + "src.app_controller._parse_token_history_first_ts_result" "src\app_controller.py" 2232 "consumer" fn-ref + "src.code_path_audit_cross_audit._file_to_aggregates" "src\code_path_audit_cross_audit.py" 36 "consumer" fn-ref + "src.gui_2.current_provider" "src\gui_2.py" 776 "consumer" fn-ref + "src.dag_engine.approve_task" "src\dag_engine.py" 206 "consumer" fn-ref + "src.api_hooks._serialize_for_api" "src\api_hooks.py" 142 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 920 "consumer" fn-ref + "src.aggregate.build_markdown_from_items" "src\aggregate.py" 348 "consumer" fn-ref + "src.code_path_audit_cross_audit.build_cross_audit_findings_for_aggregate" "src\code_path_audit_cross_audit.py" 130 "consumer" fn-ref + "src.rag_engine._search_mcp" "src\rag_engine.py" 339 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 814 "consumer" fn-ref + "src.mcp_client.call_tool" "src\mcp_client.py" 1704 "consumer" fn-ref + "src.theme_2.get_syntax_palette_for_theme" "src\theme_2.py" 351 "consumer" fn-ref + "src.mcp_client.ts_c_get_definition_result" "src\mcp_client.py" 466 "consumer" fn-ref + "src.app_controller.rag_collection_name" "src\app_controller.py" 1728 "consumer" fn-ref + "src.thinking_parser.extract_tags" "src\thinking_parser.py" 22 "consumer" fn-ref + "src.api_hook_client.trigger_patch" "src\api_hook_client.py" 274 "consumer" fn-ref + "src.app_controller._handle_set_comms_dirty" "src\app_controller.py" 733 "consumer" fn-ref + "src.multi_agent_conductor.stream_callback" "src\multi_agent_conductor.py" 569 "consumer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 470 "consumer" fn-ref + "src.workspace_manager._get_path" "src\workspace_manager.py" 20 "consumer" fn-ref + "src.gui_2._capture_workspace_profile" "src\gui_2.py" 881 "consumer" fn-ref + "src.gui_2.cb_load_prior_log" "src\gui_2.py" 1235 "consumer" fn-ref + "src.gui_2.request_patch_from_tier4" "src\gui_2.py" 1379 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1007 "consumer" fn-ref + "src.app_controller.ai_status" "src\app_controller.py" 1602 "consumer" fn-ref + "src.app_controller._cb_new_project_automated" "src\app_controller.py" 3131 "consumer" fn-ref + "src.mcp_client.ts_cpp_get_skeleton" "src\mcp_client.py" 1217 "consumer" fn-ref + "src.ai_client._chunk_text" "src\ai_client.py" 1278 "consumer" fn-ref + "src.app_controller._handle_mma_spawn_approval" "src\app_controller.py" 662 "consumer" fn-ref + "src.app_controller._handle_bead_updated" "src\app_controller.py" 721 "consumer" fn-ref + "src.tool_presets.save_preset" "src\tool_presets.py" 70 "consumer" fn-ref + "src.workspace_manager.save_profile" "src\workspace_manager.py" 50 "consumer" fn-ref + "src.code_path_audit_analysis.extract_real_optimization_candidates" "src\code_path_audit_analysis.py" 327 "consumer" fn-ref + "src.imgui_scopes.__init__" "src\imgui_scopes.py" 108 "consumer" fn-ref + "src.mcp_client.get_file_summary_result" "src\mcp_client.py" 340 "consumer" fn-ref + "src.mcp_client.ts_cpp_get_definition" "src\mcp_client.py" 1245 "consumer" fn-ref + "src.ai_client._run_tier4_patch_generation_result" "src\ai_client.py" 3118 "consumer" fn-ref + "src.code_path_audit_analysis.analyze_consumer_fields" "src\code_path_audit_analysis.py" 78 "consumer" fn-ref + "src.diff_viewer.apply_patch_to_file" "src\diff_viewer.py" 126 "consumer" fn-ref + "src.gui_2.__getattr__" "src\gui_2.py" 742 "consumer" fn-ref + "src.multi_agent_conductor._queue_put" "src\multi_agent_conductor.py" 362 "consumer" fn-ref "src.ai_client._estimate_message_tokens" "src\ai_client.py" 1218 "consumer" fn-ref + "src.paths._resolve_path" "src\paths.py" 104 "consumer" fn-ref + "src.api_hook_client.select_list_item" "src\api_hook_client.py" 256 "consumer" fn-ref + "src.command_palette.get" "src\command_palette.py" 50 "consumer" fn-ref + "src.code_path_audit.find_enclosing_function" "src\code_path_audit.py" 730 "consumer" fn-ref + "src.app_controller._handle_ai_response" "src\app_controller.py" 428 "consumer" fn-ref \ === access_pattern === "whole_struct" access-pattern -\ === access_pattern_evidence (66 items) === - "src.aggregate.build_markdown_from_items" "whole_struct" 0 "low" ap-evidence - "src.ai_client._send_anthropic" "whole_struct" 0 "low" ap-evidence - "src.app_controller._refresh_api_metrics" "field_by_field" 11 "high" ap-evidence +\ === access_pattern_evidence (50 items) === "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.ai_client._add_history_cache_breakpoint" "whole_struct" 0 "low" ap-evidence - "src.ai_client._append_comms" "whole_struct" 0 "low" ap-evidence + "src.code_path_audit.aggregate_cross_audit_findings" "whole_struct" 0 "low" ap-evidence + "src.api_hook_client.approve_mma_ticket" "whole_struct" 1 "high" ap-evidence + "src.log_registry.update_auto_whitelist_status" "mixed" 2 "high" ap-evidence "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.ai_client._repair_deepseek_history" "whole_struct" 1 "high" ap-evidence - "src.ai_client._dashscope_call" "whole_struct" 0 "low" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.ai_client._send_grok" "whole_struct" 0 "low" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.aggregate.build_tier3_context" "whole_struct" 0 "low" ap-evidence - "src.aggregate.build_markdown_no_history" "whole_struct" 0 "low" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.project_manager.migrate_from_legacy_config" "whole_struct" 1 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.app_controller._on_comms_entry" "field_by_field" 10 "high" ap-evidence - "src.aggregate.run" "field_by_field" 3 "high" ap-evidence - "src.ai_client._trim_minimax_history" "whole_struct" 1 "high" ap-evidence - "src.app_controller._start_track_logic" "mixed" 2 "high" ap-evidence - "src.project_manager.save_project" "mixed" 2 "high" ap-evidence "src.ai_client._send_gemini" "whole_struct" 1 "high" ap-evidence "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.project_manager.format_discussion" "whole_struct" 0 "low" ap-evidence - "src.ai_client._repair_minimax_history" "whole_struct" 1 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.ai_client._repair_anthropic_history" "whole_struct" 1 "high" ap-evidence - "src.ai_client._pre_dispatch" "whole_struct" 0 "low" ap-evidence - "src.ai_client._strip_stale_file_refreshes" "whole_struct" 0 "low" ap-evidence - "src.ai_client.send" "mixed" 2 "high" ap-evidence - "src.app_controller._offload_entry_payload" "whole_struct" 0 "low" ap-evidence - "src.app_controller._start_track_logic_result" "field_by_field" 17 "high" ap-evidence - "src.ai_client._send_minimax" "whole_struct" 0 "low" ap-evidence + "src.project_manager.save_project" "mixed" 2 "high" ap-evidence + "src.ai_client.run_tier4_analysis" "whole_struct" 0 "low" ap-evidence + "src.app_controller._flush_to_project_result" "whole_struct" 0 "low" ap-evidence + "src.code_path_audit.classify_memory_dim" "whole_struct" 0 "low" ap-evidence + "src.imgui_scopes.__init__" "field_by_field" 3 "high" ap-evidence + "src.beads_client.create_bead" "mixed" 2 "high" ap-evidence + "src.command_palette.fuzzy_match" "whole_struct" 1 "high" ap-evidence + "src.theme_2.set_gamma" "whole_struct" 0 "low" ap-evidence + "src.multi_agent_conductor.update_task_status" "mixed" 2 "high" ap-evidence + "src.code_path_audit.estimate_call_frequency" "whole_struct" 1 "high" ap-evidence + "src.file_cache.walk" "field_by_field" 3 "high" ap-evidence + "src.code_path_audit.detect_access_pattern" "whole_struct" 0 "low" ap-evidence + "src.api_hooks._get_app_attr" "whole_struct" 1 "high" ap-evidence "src.ai_client._send_llama_native" "whole_struct" 0 "low" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.ai_client._create_gemini_cache_result" "whole_struct" 0 "low" ap-evidence - "src.project_manager.entry_to_str" "whole_struct" 1 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.models._save_config_to_disk" "whole_struct" 0 "low" ap-evidence - "src.ai_client._send_qwen" "whole_struct" 0 "low" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.ai_client._trim_anthropic_history" "whole_struct" 1 "high" ap-evidence - "src.ai_client._strip_private_keys" "whole_struct" 0 "low" ap-evidence - "src.ai_client._estimate_prompt_tokens" "whole_struct" 0 "low" ap-evidence - "src.ai_client.ollama_chat" "whole_struct" 0 "low" ap-evidence - "src.ai_client._execute_single_tool_call_async" "mixed" 2 "high" ap-evidence - "src.project_manager.flat_config" "whole_struct" 1 "high" ap-evidence - "src.ai_client._send_deepseek" "whole_struct" 0 "low" ap-evidence - "src.ai_client._send_llama" "whole_struct" 0 "low" ap-evidence - "src.ai_client._add_bleed_derived" "field_by_field" 9 "high" ap-evidence - "src.ai_client._send_gemini_cli" "whole_struct" 0 "low" ap-evidence - "src.aggregate._build_files_section_from_items" "whole_struct" 0 "low" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.ai_client._invalidate_token_estimate" "whole_struct" 1 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.ai_client._strip_cache_controls" "whole_struct" 0 "low" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.ai_client._estimate_message_tokens" "mixed" 2 "high" ap-evidence + "src.app_controller._handle_mma_state_update" "field_by_field" 7 "high" ap-evidence + "src.ai_client._list_deepseek_models" "whole_struct" 0 "low" ap-evidence + "src.api_hooks.__init__" "whole_struct" 1 "high" ap-evidence + "src.app_controller._on_comms_entry" "field_by_field" 10 "high" ap-evidence + "src.multi_agent_conductor.approve_task" "mixed" 2 "high" ap-evidence + "src.gui_2.ui_screenshot_paths" "whole_struct" 1 "high" ap-evidence + "src.imgui_scopes.__init__" "field_by_field" 3 "high" ap-evidence + "src.ai_client._extract_gemini_thoughts_result" "whole_struct" 0 "low" ap-evidence + "src.theme_2.get_brightness" "whole_struct" 0 "low" ap-evidence + "src.history.undo" "mixed" 2 "high" ap-evidence + "src.gui_2._drain_normalize_errors" "whole_struct" 1 "high" ap-evidence + "src.app_controller._rename_discussion" "field_by_field" 3 "high" ap-evidence + "src.mcp_client.get_file_slice" "whole_struct" 0 "low" ap-evidence + "src.imgui_scopes.tab_bar" "whole_struct" 0 "low" ap-evidence + "src.session_logger.log_tool_call" "whole_struct" 0 "low" ap-evidence + "src.gui_2.current_model" "whole_struct" 1 "high" ap-evidence + "src.rag_engine.embed" "whole_struct" 0 "low" ap-evidence + "src.presets.get_preset_scope" "mixed" 2 "high" ap-evidence + "src.code_path_audit.file_origin_memory_dim" "whole_struct" 1 "high" ap-evidence + "src.rag_engine.__init__" "whole_struct" 1 "high" ap-evidence + "src.theme_2.get_gamma" "whole_struct" 0 "low" ap-evidence + "src.imgui_scopes.style_var" "whole_struct" 0 "low" ap-evidence + "src.presets._save_file" "whole_struct" 1 "high" ap-evidence + "src.aggregate.is_absolute_with_drive" "whole_struct" 0 "low" ap-evidence + "src.app_controller._topological_sort_tickets_result" "whole_struct" 1 "high" ap-evidence + "src.app_controller.ui_file_paths" "whole_struct" 1 "high" ap-evidence + "src.app_controller.rag_emb_provider" "whole_struct" 1 "high" ap-evidence + "src.code_path_audit.synthesize_aggregate_profile" "whole_struct" 1 "high" ap-evidence + "src.rag_engine._check_existing_index_result" "whole_struct" 1 "high" ap-evidence \ === frequency === "per_turn" frequency \ === frequency_evidence (5 items) === - "src.models.to_dict" "per_turn" "static_analysis" "producer from src\models.py" freq-evidence - "src.api_hook_client.get_gui_diagnostics" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence - "src.models.to_dict" "per_turn" "static_analysis" "producer from src\models.py" freq-evidence - "src.app_controller._api_get_api_project" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence - "src.api_hook_client.clear_events" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence + "src.gui_2._populate_auto_slices_file_read_result" "per_turn" "static_analysis" "producer from src\gui_2.py" freq-evidence + "src.ai_client._try_warm_sdk_result" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.api_hook_client.get_warmup_wait" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence + "src.app_controller._pending_mma_spawn" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence + "src.summarize._summarise_generic" "per_turn" "static_analysis" "producer from src\summarize.py" freq-evidence \ === result_coverage === - 96 96 46 0 result-coverage + 457 457 697 0 result-coverage \ === type_alias_coverage === - 173 0 173 type-alias-coverage + 123 0 123 type-alias-coverage \ === cross_audit_findings === - "audit_optional_in_3_files" 76 "src\ai_client.py" 159 "76 sites" cross-audit-finding + "audit_optional_in_3_files" 79 "src\mcp_client.py" 1285 "79 sites" cross-audit-finding 5 cross-audit-findings \ === decomposition_cost === - 720 0 0 "hold" "Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 10 true decomp-cost + 520 0 0 "hold" "Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=6, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 6 true decomp-cost \ === optimization_candidates (0 items) === diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.md b/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.md index 06f6c06a..1bca1862 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.md +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.md @@ -6,404 +6,2453 @@ ## Pipeline summary -- Producers: 117 -- Consumers: 66 -- Distinct producer fqnames: 96 -- Distinct consumer fqnames: 46 +- Producers: 483 +- Consumers: 752 +- Distinct producer fqnames: 457 +- Distinct consumer fqnames: 697 - Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn - Decomposition direction: hold -- Struct field count (estimated): 10 +- Struct field count (estimated): 6 -## Producers (117) +## Producers (483) -### `src\aggregate.py` (1 producer) - -- `src.aggregate.build_file_items` (line 158) - -### `src\ai_client.py` (16 producers) - -- `src.ai_client._build_chunked_context_blocks` (line 1281) -- `src.ai_client._send_cli_round_result` (line 1746) -- `src.ai_client._get_anthropic_tools` (line 664) -- `src.ai_client.get_gemini_cache_stats` (line 1604) -- `src.ai_client._content_block_to_dict` (line 1200) -- `src.ai_client._strip_private_keys` (line 1464) -- `src.ai_client._add_bleed_derived` (line 3332) -- `src.ai_client._parse_tool_args_result` (line 741) -- `src.ai_client._extract_dashscope_tool_calls` (line 2754) -- `src.ai_client.get_comms_log` (line 273) -- `src.ai_client.get_token_stats` (line 3185) -- `src.ai_client._dashscope_call` (line 2716) -- `src.ai_client._load_credentials` (line 282) -- `src.ai_client._get_deepseek_tools` (line 1194) -- `src.ai_client._pre_dispatch` (line 2089) -- `src.ai_client.ollama_chat` (line 2938) - -### `src\api_hook_client.py` (39 producers) - -- `src.api_hook_client.get_gui_diagnostics` (line 311) -- `src.api_hook_client.clear_events` (line 129) -- `src.api_hook_client.get_mma_workers` (line 546) -- `src.api_hook_client.get_startup_timeline` (line 353) -- `src.api_hook_client.get_session` (line 502) -- `src.api_hook_client.get_status` (line 105) -- `src.api_hook_client._make_request` (line 65) -- `src.api_hook_client.right_click` (line 237) -- `src.api_hook_client.trigger_patch` (line 274) -- `src.api_hook_client.select_tab` (line 263) -- `src.api_hook_client.click` (line 223) -- `src.api_hook_client.get_gui_state` (line 165) -- `src.api_hook_client.post_project` (line 473) -- `src.api_hook_client.get_patch_status` (line 295) -- `src.api_hook_client.push_event` (line 156) -- `src.api_hook_client.reject_patch` (line 288) -- `src.api_hook_client.get_project` (line 367) -- `src.api_hook_client.get_performance` (line 318) -- `src.api_hook_client.select_list_item` (line 256) -- `src.api_hook_client.get_warmup_status` (line 325) -- `src.api_hook_client.get_project_switch_status` (line 374) -- `src.api_hook_client.post_session` (line 117) -- `src.api_hook_client.get_system_telemetry` (line 524) -- `src.api_hook_client.wait_for_project_switch` (line 389) -- `src.api_hook_client.get_events` (line 124) -- `src.api_hook_client.get_gui_health` (line 434) -- `src.api_hook_client.apply_patch` (line 281) -- `src.api_hook_client.get_warmup_wait` (line 332) -- `src.api_hook_client.get_warmup_canaries` (line 342) -- `src.api_hook_client.get_financial_metrics` (line 520) -- `src.api_hook_client.post_gui` (line 149) -- `src.api_hook_client.drag` (line 230) -- `src.api_hook_client.post_project` (line 470) -- `src.api_hook_client.get_node_status` (line 532) -- `src.api_hook_client.get_io_pool_status` (line 420) -- `src.api_hook_client.wait_for_event` (line 136) -- `src.api_hook_client.get_context_state` (line 491) -- `src.api_hook_client.get_mma_status` (line 539) -- `src.api_hook_client.set_value` (line 212) - -### `src\app_controller.py` (30 producers) - -- `src.app_controller._api_get_api_project` (line 188) -- `src.app_controller.get_api_project` (line 2853) -- `src.app_controller._offload_entry_payload` (line 4240) -- `src.app_controller.generate` (line 2868) -- `src.app_controller.token_stats` (line 2898) -- `src.app_controller._api_get_session` (line 374) -- `src.app_controller._api_get_gui_state` (line 123) -- `src.app_controller.load_config` (line 5142) -- `src.app_controller.pending_actions` (line 2874) -- `src.app_controller._api_get_performance` (line 195) -- `src.app_controller._api_get_context` (line 398) -- `src.app_controller.status` (line 2865) -- `src.app_controller._api_generate` (line 221) -- `src.app_controller._api_status` (line 209) -- `src.app_controller._api_token_stats` (line 417) -- `src.app_controller._api_get_api_session` (line 170) -- `src.app_controller.get_context` (line 2892) -- `src.app_controller.get_session_insights` (line 3049) -- `src.app_controller._pending_mma_approval` (line 2776) -- `src.app_controller.wait` (line 5205) -- `src.app_controller.get_session` (line 2883) -- `src.app_controller._api_get_mma_status` (line 144) -- `src.app_controller._api_pending_actions` (line 335) -- `src.app_controller.get_mma_status` (line 2835) -- `src.app_controller._pending_mma_spawn` (line 2772) -- `src.app_controller.get_performance` (line 2856) -- `src.app_controller.get_diagnostics` (line 2862) -- `src.app_controller._api_get_diagnostics` (line 202) -- `src.app_controller.get_api_session` (line 2847) -- `src.app_controller.get_gui_state` (line 2829) - -### `src\models.py` (23 producers) - -- `src.models.to_dict` (line 441) -- `src.models.to_dict` (line 1024) -- `src.models.to_dict` (line 737) -- `src.models.to_dict` (line 618) -- `src.models.to_dict` (line 486) -- `src.models.to_dict` (line 886) -- `src.models.to_dict` (line 971) -- `src.models.parse_history_entries` (line 214) -- `src.models.to_dict` (line 646) -- `src.models.to_dict` (line 406) -- `src.models.to_dict` (line 701) -- `src.models.to_dict` (line 672) -- `src.models.to_dict` (line 355) -- `src.models.to_dict` (line 1059) -- `src.models.to_dict` (line 794) -- `src.models._load_config_from_disk` (line 186) -- `src.models.to_dict` (line 855) -- `src.models.to_dict` (line 1000) -- `src.models.to_dict` (line 938) -- `src.models.to_dict` (line 288) -- `src.models.to_dict` (line 913) -- `src.models.to_dict` (line 596) -- `src.models.to_dict` (line 558) - -### `src\project_manager.py` (8 producers) - -- `src.project_manager.flat_config` (line 267) -- `src.project_manager.str_to_entry` (line 75) -- `src.project_manager.default_discussion` (line 117) -- `src.project_manager.load_project` (line 186) -- `src.project_manager.get_all_tracks` (line 342) -- `src.project_manager.default_project` (line 123) -- `src.project_manager.migrate_from_legacy_config` (line 253) -- `src.project_manager.load_history` (line 209) - -## Consumers (66) - -### `src\aggregate.py` (5 consumers) +### `src\aggregate.py` (13 producers) +- `src.aggregate.run` (line 479) - `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_file_items` (line 158) +- `src.aggregate.build_beads_section` (line 327) +- `src.aggregate._build_files_section_from_items` (line 300) +- `src.aggregate.group_files_by_dir` (line 86) +- `src.aggregate.build_discussion_text` (line 373) - `src.aggregate.build_tier3_context` (line 382) - `src.aggregate.build_markdown_no_history` (line 366) -- `src.aggregate.run` (line 479) -- `src.aggregate._build_files_section_from_items` (line 300) +- `src.aggregate.compute_file_stats` (line 104) +- `src.aggregate.build_discussion_section` (line 125) +- `src.aggregate.build_markdown` (line 475) +- `src.aggregate.build_screenshots_section` (line 142) -### `src\ai_client.py` (29 consumers) +### `src\ai_client.py` (59 producers) -- `src.ai_client._send_anthropic` (line 1405) -- `src.ai_client._add_history_cache_breakpoint` (line 1299) -- `src.ai_client._append_comms` (line 257) -- `src.ai_client._repair_deepseek_history` (line 2138) -- `src.ai_client._dashscope_call` (line 2716) -- `src.ai_client._send_grok` (line 2530) -- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._try_warm_sdk_result` (line 298) +- `src.ai_client._list_llama_models` (line 3024) +- `src.ai_client._get_gemini_history_list` (line 1795) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._load_credentials` (line 282) - `src.ai_client._send_gemini` (line 1802) -- `src.ai_client._repair_minimax_history` (line 2462) -- `src.ai_client._repair_anthropic_history` (line 1381) -- `src.ai_client._pre_dispatch` (line 2089) -- `src.ai_client._strip_stale_file_refreshes` (line 1253) -- `src.ai_client.send` (line 3208) -- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.run_tier4_analysis` (line 3082) - `src.ai_client._send_llama_native` (line 2958) -- `src.ai_client._create_gemini_cache_result` (line 1706) -- `src.ai_client._send_qwen` (line 2773) -- `src.ai_client._trim_anthropic_history` (line 1353) -- `src.ai_client._strip_private_keys` (line 1464) -- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._list_deepseek_models` (line 2135) - `src.ai_client.ollama_chat` (line 2938) -- `src.ai_client._execute_single_tool_call_async` (line 945) -- `src.ai_client._send_deepseek` (line 2165) -- `src.ai_client._send_llama` (line 2858) +- `src.ai_client.send` (line 3208) +- `src.ai_client._ensure_llama_client` (line 2844) - `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client.list_models` (line 506) +- `src.ai_client._run_script` (line 1038) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client.run_tier4_patch_generation` (line 3157) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._get_context_marker` (line 218) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._ensure_grok_client` (line 2519) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client._chunk_text` (line 1278) +- `src.ai_client.run_discussion_compression` (line 3409) +- `src.ai_client._run_tier4_patch_generation_result` (line 3118) +- `src.ai_client._get_combined_system_prompt` (line 221) +- `src.ai_client._list_grok_models` (line 2612) +- `src.ai_client._extract_minimax_reasoning` (line 2677) +- `src.ai_client._extract_gemini_thoughts_result` (line 1768) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client.run_with_tool_loop` (line 833) +- `src.ai_client.get_provider` (line 448) +- `src.ai_client._build_file_context_text` (line 1092) +- `src.ai_client.run_tier4_patch_callback` (line 3115) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._list_gemini_cli_models` (line 1616) - `src.ai_client._send_gemini_cli` (line 2019) -- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client.get_combined_system_prompt` (line 236) +- `src.ai_client._list_qwen_models` (line 2769) +- `src.ai_client._run_tier4_analysis_result` (line 3042) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client.get_current_tier` (line 159) +- `src.ai_client.get_bias_profile` (line 619) +- `src.ai_client._truncate_tool_output` (line 1047) +- `src.ai_client._build_file_diff_text` (line 1105) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client.run_subagent_summarization` (line 3356) + +### `src\api_hook_client.py` (49 producers) + +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.approve_mma_ticket` (line 583) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client.pause_mma_pipeline` (line 565) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.mutate_mma_dag` (line 576) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.kill_mma_worker` (line 561) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_text_value` (line 204) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.spawn_mma_worker` (line 553) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.inject_context` (line 484) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.get_indicator_state` (line 303) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.get_value` (line 172) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.resume_mma_pipeline` (line 572) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\api_hooks.py` (2 producers) + +- `src.api_hooks._get_app_attr` (line 56) +- `src.api_hooks._safe_controller_result` (line 81) + +### `src\api_hooks_helpers.py` (1 producer) + +- `src.api_hooks_helpers._get_app_attr` (line 3) + +### `src\app_controller.py` (72 producers) + +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._api_post_api_session` (line 178) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller.post_gui` (line 2841) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._confirm_and_run` (line 4402) +- `src.app_controller.current_model` (line 2796) +- `src.app_controller.rag_source` (line 1676) +- `src.app_controller._api_health` (line 116) +- `src.app_controller.current_provider` (line 2780) +- `src.app_controller._api_status` (line 209) +- `src.app_controller.startup_timeline` (line 1435) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller.warmup_status` (line 2593) +- `src.app_controller._get_discussion_names` (line 3741) +- `src.app_controller._api_post_gui` (line 162) +- `src.app_controller._api_confirm_action` (line 346) +- `src.app_controller.list_sessions` (line 2880) +- `src.app_controller.get_symbol_definition` (line 69) +- `src.app_controller.delete_session` (line 2889) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.warmup_canaries` (line 2601) +- `src.app_controller._extract_tool_name` (line 4460) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller.parse_symbols` (line 63) +- `src.app_controller._api_list_sessions` (line 364) +- `src.app_controller.rag_mcp_server` (line 1711) +- `src.app_controller._compute_warmup_list` (line 2570) +- `src.app_controller._resolve_log_ref` (line 2145) +- `src.app_controller.stream` (line 2871) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.ai_status` (line 1598) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller.confirm_action` (line 2877) +- `src.app_controller._api_get_key` (line 100) +- `src.app_controller.active_project_root` (line 1546) +- `src.app_controller.submit_io` (line 2646) +- `src.app_controller.status` (line 2865) +- `src.app_controller.summary_cache` (line 1618) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.rag_emb_provider` (line 1686) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_api_session` (line 2847) +- `src.app_controller._do_generate` (line 4004) +- `src.app_controller.mcp_config_json` (line 1734) +- `src.app_controller.wait` (line 5205) +- `src.app_controller.ui_file_paths` (line 1764) +- `src.app_controller.__getattr__` (line 1273) +- `src.app_controller.get_api_key` (line 2823) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller.rag_mcp_tool` (line 1718) +- `src.app_controller.post_api_session` (line 2850) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller._api_delete_session` (line 385) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.health` (line 2826) +- `src.app_controller._api_stream` (line 327) +- `src.app_controller.mma_status` (line 1606) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.rag_collection_name` (line 1725) + +### `src\beads_client.py` (2 producers) + +- `src.beads_client._read_beads` (line 77) +- `src.beads_client.create_bead` (line 42) + +### `src\code_path_audit.py` (14 producers) + +- `src.code_path_audit.generate_rationale` (line 606) +- `src.code_path_audit._extract_type_name` (line 172) +- `src.code_path_audit.to_markdown` (line 939) +- `src.code_path_audit.load_frequency_overrides` (line 494) +- `src.code_path_audit._atom` (line 865) +- `src.code_path_audit.read_input_json` (line 660) +- `src.code_path_audit.to_tree` (line 1007) +- `src.code_path_audit._resolve_aliases` (line 224) +- `src.code_path_audit.render_rollups` (line 1268) +- `src.code_path_audit.to_dsl_v2` (line 871) +- `src.code_path_audit.code_path_audit_v2` (line 1349) +- `src.code_path_audit.parse_dsl_v2` (line 1034) +- `src.code_path_audit.run_all_cross_audit_reads` (line 823) +- `src.code_path_audit.load_memory_dim_overrides` (line 378) + +### `src\code_path_audit_analysis.py` (2 producers) + +- `src.code_path_audit_analysis._field_names_for_aggregate` (line 32) +- `src.code_path_audit_analysis._analyze_function_param_names` (line 67) + +### `src\code_path_audit_cross_audit.py` (5 producers) + +- `src.code_path_audit_cross_audit._normalize_path` (line 66) +- `src.code_path_audit_cross_audit.map_finding_to_aggregates` (line 71) +- `src.code_path_audit_cross_audit.aggregate_findings` (line 93) +- `src.code_path_audit_cross_audit._file_to_aggregates` (line 36) +- `src.code_path_audit_cross_audit._aggregate_for_fqname` (line 51) + +### `src\code_path_audit_render.py` (3 producers) + +- `src.code_path_audit_render.render_full_markdown` (line 16) +- `src.code_path_audit_render.render_call_graph_rollup` (line 309) +- `src.code_path_audit_render.render_field_usage_rollup` (line 285) + +### `src\code_path_audit_ssdl.py` (4 producers) + +- `src.code_path_audit_ssdl.render_ssdl_sketch` (line 175) +- `src.code_path_audit_ssdl.suggest_defusing_technique` (line 128) +- `src.code_path_audit_ssdl.render_organization_deductions` (line 259) +- `src.code_path_audit_ssdl.render_ssdl_rollup` (line 221) + +### `src\command_palette.py` (1 producer) + +- `src.command_palette.register` (line 32) + +### `src\commands.py` (3 producers) + +- `src.commands.register` (line 39) +- `src.commands.__getattr__` (line 43) +- `src.commands._get_real_registry` (line 47) + +### `src\conductor_tech_lead.py` (2 producers) + +- `src.conductor_tech_lead.generate_tickets` (line 45) +- `src.conductor_tech_lead.topological_sort` (line 107) + +### `src\dag_engine.py` (1 producer) + +- `src.dag_engine.topological_sort` (line 130) + +### `src\diff_viewer.py` (1 producer) + +- `src.diff_viewer.get_line_color` (line 117) + +### `src\events.py` (3 producers) + +- `src.events.to_dict` (line 166) +- `src.events._make_serializable` (line 170) +- `src.events.get` (line 119) + +### `src\external_editor.py` (3 producers) + +- `src.external_editor.create_temp_modified_file` (line 147) +- `src.external_editor.build_diff_command` (line 30) +- `src.external_editor._find_vscode_common_paths` (line 90) + +### `src\file_cache.py` (10 producers) + +- `src.file_cache.get_curated_view` (line 291) +- `src.file_cache.update_definition` (line 790) +- `src.file_cache.get_file_id` (line 895) +- `src.file_cache.get_targeted_view` (line 371) +- `src.file_cache.get_skeleton` (line 207) +- `src.file_cache.find_id` (line 129) +- `src.file_cache._get_name` (line 123) +- `src.file_cache.get_definition` (line 538) +- `src.file_cache.get_code_outline` (line 748) +- `src.file_cache.get_signature` (line 636) + +### `src\fuzzy_anchor.py` (2 producers) + +- `src.fuzzy_anchor.get_context` (line 9) +- `src.fuzzy_anchor.create_slice` (line 20) + +### `src\gemini_cli_adapter.py` (1 producer) + +- `src.gemini_cli_adapter.send` (line 61) + +### `src\gui_2.py` (20 producers) + +- `src.gui_2._populate_auto_slices_file_read_result` (line 7956) +- `src.gui_2.ui_message` (line 7544) +- `src.gui_2.askdirectory` (line 90) +- `src.gui_2.__getattr__` (line 742) +- `src.gui_2._capture_workspace_profile_ini_result` (line 8398) +- `src.gui_2._render_context_batch_actions_preview_result` (line 8167) +- `src.gui_2._render_ast_inspector_outline_result` (line 7863) +- `src.gui_2._resolve_font_path_result` (line 227) +- `src.gui_2._diag_layout_state_ini_text_result` (line 8373) +- `src.gui_2.missing_files` (line 806) +- `src.gui_2._render_warmup_status_indicator_result` (line 7732) +- `src.gui_2.app_debug_info` (line 810) +- `src.gui_2.current_provider` (line 772) +- `src.gui_2.askopenfilename` (line 88) +- `src.gui_2.truncate_entries` (line 173) +- `src.gui_2.ui_screenshot_paths` (line 1014) +- `src.gui_2.asksaveasfilename` (line 91) +- `src.gui_2.current_model` (line 780) +- `src.gui_2.ui_file_paths` (line 995) +- `src.gui_2._populate_auto_slices_outline_result` (line 7926) + +### `src\history.py` (1 producer) + +- `src.history.to_dict` (line 24) + +### `src\hot_reloader.py` (1 producer) + +- `src.hot_reloader.capture_state` (line 33) + +### `src\log_registry.py` (6 producers) + +- `src.log_registry.get_old_non_whitelisted_sessions` (line 390) +- `src.log_registry.__getitem__` (line 93) +- `src.log_registry.to_dict` (line 81) +- `src.log_registry.to_dict` (line 62) +- `src.log_registry.get` (line 105) +- `src.log_registry.sessions` (line 155) + +### `src\markdown_helper.py` (4 producers) + +- `src.markdown_helper.detect_language` (line 378) +- `src.markdown_helper._normalize_bullet_delimiters` (line 215) +- `src.markdown_helper._normalize_nested_list_endings` (line 228) +- `src.markdown_helper._normalize_list_continuations` (line 254) + +### `src\markdown_table.py` (1 producer) + +- `src.markdown_table._split_row` (line 36) + +### `src\mcp_client.py` (87 producers) + +- `src.mcp_client.py_find_usages` (line 1431) +- `src.mcp_client.ts_c_update_definition_result` (line 496) +- `src.mcp_client.get_file_summary` (line 1093) +- `src.mcp_client.py_get_skeleton_result` (line 595) +- `src.mcp_client.ts_c_get_definition_result` (line 466) +- `src.mcp_client._ast_get_signature` (line 428) +- `src.mcp_client.get_tree` (line 1505) +- `src.mcp_client.py_set_signature` (line 1383) +- `src.mcp_client.ts_cpp_get_skeleton` (line 1217) +- `src.mcp_client.get_file_summary_result` (line 340) +- `src.mcp_client.dispatch` (line 1772) +- `src.mcp_client.ts_cpp_get_code_outline` (line 1231) +- `src.mcp_client.py_update_definition_result` (line 663) +- `src.mcp_client.read_file` (line 203) +- `src.mcp_client._build_tree` (line 1002) +- `src.mcp_client.py_get_signature_result` (line 684) +- `src.mcp_client._ast_update_definition` (line 432) +- `src.mcp_client.fetch_url_result` (line 1043) +- `src.mcp_client.get_git_diff_result` (line 397) +- `src.mcp_client.ts_cpp_update_definition_result` (line 576) +- `src.mcp_client.ts_cpp_update_definition` (line 1269) +- `src.mcp_client.async_dispatch` (line 1752) +- `src.mcp_client.py_get_definition_result` (line 646) +- `src.mcp_client.list_directory_result` (line 256) +- `src.mcp_client.ts_cpp_get_skeleton_result` (line 515) +- `src.mcp_client.py_get_imports` (line 1443) +- `src.mcp_client.search_files` (line 177) +- `src.mcp_client.py_get_var_declaration_result` (line 767) +- `src.mcp_client.read_file_result` (line 239) +- `src.mcp_client.derive_code_path` (line 1491) +- `src.mcp_client.ts_cpp_get_signature_result` (line 561) +- `src.mcp_client.py_get_symbol_info` (line 1335) +- `src.mcp_client.py_get_hierarchy` (line 1467) +- `src.mcp_client.py_set_signature_result` (line 714) +- `src.mcp_client.py_set_var_declaration` (line 1419) +- `src.mcp_client.py_get_class_summary` (line 1395) +- `src.mcp_client.py_check_syntax_result` (line 880) +- `src.mcp_client.ts_c_get_skeleton` (line 1149) +- `src.mcp_client.get_tool_schemas` (line 1954) +- `src.mcp_client.py_set_var_declaration_result` (line 789) +- `src.mcp_client.ts_cpp_get_definition` (line 1245) +- `src.mcp_client.get_all_tools` (line 1737) +- `src.mcp_client.py_get_imports_result` (line 853) +- `src.mcp_client.ts_c_get_code_outline` (line 1163) +- `src.mcp_client.py_get_definition` (line 1347) +- `src.mcp_client.set_file_slice` (line 1120) +- `src.mcp_client.search_files_result` (line 284) +- `src.mcp_client.py_update_definition` (line 1359) +- `src.mcp_client.ts_cpp_get_code_outline_result` (line 530) +- `src.mcp_client.get_file_slice` (line 1108) +- `src.mcp_client.web_search_result` (line 1026) +- `src.mcp_client.py_get_code_outline` (line 1323) +- `src.mcp_client.py_get_signature` (line 1371) +- `src.mcp_client.py_get_docstring` (line 1479) +- `src.mcp_client.py_get_symbol_info_result` (line 629) +- `src.mcp_client.derive_code_path_result` (line 923) +- `src.mcp_client.ts_cpp_get_signature` (line 1257) +- `src.mcp_client.ts_c_get_code_outline_result` (line 451) +- `src.mcp_client.edit_file_result` (line 312) +- `src.mcp_client._ast_get_definition` (line 424) +- `src.mcp_client.py_get_code_outline_result` (line 612) +- `src.mcp_client.ts_c_get_signature_result` (line 481) +- `src.mcp_client.get_ui_performance` (line 1601) +- `src.mcp_client.web_search` (line 1578) +- `src.mcp_client.get_tree_result` (line 992) +- `src.mcp_client.ts_cpp_get_definition_result` (line 546) +- `src.mcp_client.async_dispatch` (line 1939) +- `src.mcp_client.py_get_class_summary_result` (line 737) +- `src.mcp_client.get_ui_performance_result` (line 1066) +- `src.mcp_client.fetch_url` (line 1590) +- `src.mcp_client.py_get_docstring_result` (line 898) +- `src.mcp_client.set_file_slice_result` (line 374) +- `src.mcp_client.get_servers_status` (line 1748) +- `src.mcp_client.py_check_syntax` (line 1455) +- `src.mcp_client.edit_file` (line 1079) +- `src.mcp_client._ast_get_skeleton` (line 416) +- `src.mcp_client._ast_get_code_outline` (line 420) +- `src.mcp_client.get_file_slice_result` (line 357) +- `src.mcp_client.get_git_diff` (line 1132) +- `src.mcp_client.ts_c_update_definition` (line 1201) +- `src.mcp_client.py_get_skeleton` (line 1311) +- `src.mcp_client.py_get_var_declaration` (line 1407) +- `src.mcp_client.py_find_usages_result` (line 811) +- `src.mcp_client.ts_c_get_skeleton_result` (line 436) +- `src.mcp_client.ts_c_get_definition` (line 1177) +- `src.mcp_client.ts_c_get_signature` (line 1189) +- `src.mcp_client.list_directory` (line 191) + +### `src\mcp_tool_specs.py` (3 producers) + +- `src.mcp_tool_specs.tool_names` (line 77) +- `src.mcp_tool_specs.to_dict` (line 33) +- `src.mcp_tool_specs.to_dict` (line 46) + +### `src\models.py` (28 producers) + +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 1059) +- `src.models.provider` (line 770) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 618) +- `src.models.get` (line 349) +- `src.models.model` (line 775) +- `src.models.to_dict` (line 1000) +- `src.models.__getattr__` (line 271) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models._clean_nones` (line 179) +- `src.models.to_dict` (line 938) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 701) + +### `src\module_loader.py` (1 producer) + +- `src.module_loader._require_warmed` (line 35) + +### `src\openai_compatible.py` (1 producer) + +- `src.openai_compatible._to_dict_tool_call` (line 54) + +### `src\openai_schemas.py` (3 producers) + +- `src.openai_schemas.to_legacy_dict` (line 80) +- `src.openai_schemas.to_dict` (line 35) +- `src.openai_schemas.to_dict` (line 54) + +### `src\orchestrator_pm.py` (2 producers) + +- `src.orchestrator_pm.generate_tracks` (line 58) +- `src.orchestrator_pm.get_track_history_summary` (line 14) + +### `src\outline_tool.py` (3 producers) + +- `src.outline_tool.get_outline` (line 127) +- `src.outline_tool.get_docstring` (line 56) +- `src.outline_tool.outline` (line 44) + +### `src\paths.py` (2 producers) + +- `src.paths.get_full_path_info` (line 281) +- `src.paths.info` (line 286) + +### `src\performance_monitor.py` (1 producer) + +- `src.performance_monitor.get_metrics` (line 233) + +### `src\personas.py` (3 producers) + +- `src.personas.load_all` (line 29) +- `src.personas._load_file` (line 86) +- `src.personas.get_persona_scope` (line 61) + +### `src\presets.py` (3 producers) + +- `src.presets.get_preset_scope` (line 84) +- `src.presets._load_file` (line 99) +- `src.presets.load_all` (line 24) + +### `src\project_manager.py` (15 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.load_track_history` (line 314) +- `src.project_manager.calculate_track_progress` (line 420) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.now_ts` (line 39) +- `src.project_manager.clean_nones` (line 220) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.get_git_commit` (line 104) +- `src.project_manager.format_discussion` (line 69) + +### `src\provider_state.py` (1 producer) + +- `src.provider_state.providers` (line 68) + +### `src\qwen_adapter.py` (1 producer) + +- `src.qwen_adapter.build_dashscope_tools` (line 13) + +### `src\rag_engine.py` (3 producers) + +- `src.rag_engine.get_all_indexed_paths` (line 382) +- `src.rag_engine._chunk_text` (line 210) +- `src.rag_engine._read_file_content_result` (line 278) + +### `src\result_types.py` (1 producer) + +- `src.result_types.ui_message` (line 27) + +### `src\session_logger.py` (3 producers) + +- `src.session_logger.log_tool_call` (line 166) +- `src.session_logger._now_ts` (line 57) +- `src.session_logger.log_tool_output` (line 211) + +### `src\shell_runner.py` (3 producers) + +- `src.shell_runner._build_subprocess_env` (line 43) +- `src.shell_runner._load_env_config` (line 27) +- `src.shell_runner.run_powershell` (line 58) + +### `src\startup_profiler.py` (1 producer) + +- `src.startup_profiler.snapshot` (line 64) + +### `src\summarize.py` (7 producers) + +- `src.summarize._summarise_generic` (line 121) +- `src.summarize.summarise_items` (line 194) +- `src.summarize.build_summary_markdown` (line 212) +- `src.summarize.summarise_file` (line 159) +- `src.summarize._summarise_markdown` (line 105) +- `src.summarize._summarise_python` (line 31) +- `src.summarize._summarise_toml` (line 78) + +### `src\summary_cache.py` (3 producers) + +- `src.summary_cache.get_stats` (line 102) +- `src.summary_cache.get_file_hash` (line 10) +- `src.summary_cache.get_summary` (line 57) + +### `src\synthesis_formatter.py` (1 producer) + +- `src.synthesis_formatter.format_takes_diff` (line 1) + +### `src\theme_2.py` (6 producers) + +- `src.theme_2.get_palette_names` (line 291) +- `src.theme_2.get_syntax_palette_for_theme` (line 351) +- `src.theme_2.get_current_font_path` (line 123) +- `src.theme_2.get_current_palette` (line 117) +- `src.theme_2.get_font_loading_params` (line 377) +- `src.theme_2._build_semantic_colour_dict` (line 52) + +### `src\theme_models.py` (4 producers) + +- `src.theme_models.load_themes_from_dir` (line 181) +- `src.theme_models.to_dict` (line 137) +- `src.theme_models.to_dict` (line 107) +- `src.theme_models.load_themes_from_toml` (line 200) + +### `src\tool_bias.py` (1 producer) + +- `src.tool_bias.generate_tooling_strategy` (line 43) + +### `src\tool_presets.py` (4 producers) + +- `src.tool_presets._read_raw` (line 28) +- `src.tool_presets.load_all_presets` (line 42) +- `src.tool_presets.load_all_bias_profiles` (line 91) +- `src.tool_presets.load_all` (line 63) + +### `src\vendor_capabilities.py` (1 producer) + +- `src.vendor_capabilities.list_models_for_vendor` (line 44) + +### `src\warmup.py` (3 producers) + +- `src.warmup.status` (line 120) +- `src.warmup.canaries` (line 128) +- `src.warmup._snapshot` (line 355) + +### `src\workspace_manager.py` (2 producers) + +- `src.workspace_manager.load_all_profiles` (line 30) +- `src.workspace_manager._load_file` (line 72) + +## Consumers (752) + +### `src\aggregate.py` (14 consumers) + +- `src.aggregate.is_absolute_with_drive` (line 60) +- `src.aggregate._build_files_section_from_items` (line 300) +- `src.aggregate.group_files_by_dir` (line 86) +- `src.aggregate.compute_file_stats` (line 104) +- `src.aggregate.build_discussion_text` (line 373) +- `src.aggregate.build_markdown` (line 475) +- `src.aggregate.resolve_paths` (line 68) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.build_discussion_section` (line 125) +- `src.aggregate.build_screenshots_section` (line 142) +- `src.aggregate.find_next_increment` (line 50) +- `src.aggregate.run` (line 479) +- `src.aggregate.build_markdown_from_items` (line 348) + +### `src\ai_client.py` (74 consumers) + +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client.run_tier4_analysis` (line 3082) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client._list_deepseek_models` (line 2135) +- `src.ai_client._extract_gemini_thoughts_result` (line 1768) +- `src.ai_client._classify_minimax_error` (line 375) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client.set_current_tier` (line 163) +- `src.ai_client._send_cli_round_result` (line 1746) +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) - `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client.list_models` (line 506) +- `src.ai_client._run_script` (line 1038) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._dashscope_exception_from_response` (line 2750) +- `src.ai_client.set_agent_tools` (line 532) +- `src.ai_client.run_tier4_patch_generation` (line 3157) +- `src.ai_client.set_bias_profile` (line 611) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client.run_tier4_patch_callback` (line 3115) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client.run_discussion_compression` (line 3409) +- `src.ai_client._run_tier4_patch_callback_result` (line 3089) +- `src.ai_client._set_tool_preset_result` (line 539) +- `src.ai_client._run_tier4_analysis_result` (line 3042) +- `src.ai_client._extract_minimax_reasoning` (line 2677) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._classify_anthropic_error` (line 315) +- `src.ai_client._should_cache_gemini_result` (line 1679) +- `src.ai_client.set_base_system_prompt` (line 206) +- `src.ai_client._set_minimax_provider_result` (line 398) +- `src.ai_client._count_gemini_tokens_for_stats_result` (line 3163) +- `src.ai_client.run_with_tool_loop` (line 833) +- `src.ai_client.set_project_context_marker` (line 214) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._list_gemini_models_result` (line 1626) +- `src.ai_client.set_custom_system_prompt` (line 201) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._classify_deepseek_error` (line 349) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.set_provider` (line 417) +- `src.ai_client.send` (line 3208) +- `src.ai_client._truncate_tool_output` (line 1047) +- `src.ai_client._execute_tool_calls_concurrently` (line 758) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client.set_tool_preset` (line 576) +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client.run_subagent_summarization` (line 3356) +- `src.ai_client._list_minimax_models_result` (line 2436) +- `src.ai_client._try_warm_sdk_result` (line 298) +- `src.ai_client._set_bias_profile_result` (line 590) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._classify_gemini_error` (line 333) +- `src.ai_client._get_gemini_history_list` (line 1795) +- `src.ai_client._chunk_text` (line 1278) +- `src.ai_client._run_tier4_patch_generation_result` (line 3118) - `src.ai_client._estimate_message_tokens` (line 1218) -### `src\app_controller.py` (5 consumers) +### `src\api_hook_client.py` (26 consumers) -- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.api_hook_client.approve_mma_ticket` (line 583) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.mutate_mma_dag` (line 576) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.kill_mma_worker` (line 561) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.get_text_value` (line 204) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.spawn_mma_worker` (line 553) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.request_confirmation` (line 244) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.inject_context` (line 484) +- `src.api_hook_client.__init__` (line 58) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_indicator_state` (line 303) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.get_value` (line 172) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.select_list_item` (line 256) + +### `src\api_hooks.py` (10 consumers) + +- `src.api_hooks._get_app_attr` (line 56) +- `src.api_hooks.__init__` (line 910) +- `src.api_hooks.__init__` (line 133) +- `src.api_hooks._safe_controller_result` (line 81) +- `src.api_hooks._parse_float_result` (line 100) +- `src.api_hooks._set_app_attr` (line 72) +- `src.api_hooks.__init__` (line 857) +- `src.api_hooks.log_message` (line 853) +- `src.api_hooks._has_app_attr` (line 66) +- `src.api_hooks._serialize_for_api` (line 142) + +### `src\api_hooks_helpers.py` (3 consumers) + +- `src.api_hooks_helpers._get_app_attr` (line 3) +- `src.api_hooks_helpers._has_app_attr` (line 13) +- `src.api_hooks_helpers._set_app_attr` (line 19) + +### `src\app_controller.py` (123 consumers) + +- `src.app_controller._flush_to_project_result` (line 2180) +- `src.app_controller._handle_mma_state_update` (line 460) - `src.app_controller._on_comms_entry` (line 4282) -- `src.app_controller._start_track_logic` (line 4721) -- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._rename_discussion` (line 4115) +- `src.app_controller._topological_sort_tickets_result` (line 4708) +- `src.app_controller.ui_file_paths` (line 1768) +- `src.app_controller.rag_emb_provider` (line 1690) +- `src.app_controller._cb_save_view_preset` (line 3696) +- `src.app_controller._handle_set_tool_log_dirty` (line 737) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._set_rag_status` (line 3434) +- `src.app_controller.__init__` (line 5194) +- `src.app_controller.mutate_dag` (line 4877) +- `src.app_controller.cb_load_prior_log` (line 2120) +- `src.app_controller._save_fallback_project_result` (line 2461) +- `src.app_controller._handle_clear_summary_cache` (line 3372) +- `src.app_controller._update_gcli_adapter` (line 1831) +- `src.app_controller._delete_discussion` (line 4131) +- `src.app_controller._handle_click` (line 583) +- `src.app_controller._symbol_resolution_result` (line 3506) +- `src.app_controller.current_provider` (line 2784) +- `src.app_controller._on_ai_stream` (line 4271) +- `src.app_controller._api_post_gui` (line 162) +- `src.app_controller._handle_hide_patch_modal` (line 751) +- `src.app_controller._api_confirm_action` (line 346) +- `src.app_controller._cb_load_track_result` (line 5013) +- `src.app_controller.get_symbol_definition` (line 69) +- `src.app_controller._create_discussion` (line 4081) +- `src.app_controller.delete_session` (line 2889) +- `src.app_controller._handle_mma_step_approval` (line 648) +- `src.app_controller.mma_status` (line 1610) +- `src.app_controller._cb_save_workspace_profile` (line 2910) +- `src.app_controller._spawn_worker` (line 4829) +- `src.app_controller._extract_tool_name` (line 4460) +- `src.app_controller.__init__` (line 5172) +- `src.app_controller.approve_ticket` (line 4864) +- `src.app_controller.__init__` (line 78) +- `src.app_controller._do_project_switch` (line 3146) +- `src.app_controller._handle_show_track_proposal` (line 538) +- `src.app_controller.load_context_preset` (line 3394) +- `src.app_controller._handle_set_value` (line 562) +- `src.app_controller.parse_symbols` (line 63) +- `src.app_controller.inject_context` (line 2523) +- `src.app_controller._cb_start_track` (line 4662) +- `src.app_controller._append_tool_log` (line 4381) +- `src.app_controller._cb_delete_persona` (line 3689) +- `src.app_controller._test_callback_func_write_to_file` (line 1932) +- `src.app_controller._apply_preset` (line 3616) +- `src.app_controller._resolve_log_ref` (line 2145) +- `src.app_controller._list_models_for_provider_result` (line 3544) +- `src.app_controller._cb_ticket_retry` (line 4809) +- `src.app_controller._handle_custom_callback` (line 543) +- `src.app_controller.kill_worker` (line 4841) +- `src.app_controller._handle_set_mma_status` (line 525) +- `src.app_controller.resolve_pending_action` (line 4442) +- `src.app_controller._record_startup_timeline_error` (line 1412) +- `src.app_controller._on_api_event` (line 4260) +- `src.app_controller._api_delete_session` (line 385) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._handle_clear_ask` (line 641) +- `src.app_controller.rag_mcp_server` (line 1714) +- `src.app_controller._fetch_models` (line 3565) +- `src.app_controller.current_model` (line 2800) +- `src.app_controller.confirm_action` (line 2877) +- `src.app_controller._cb_ticket_skip` (line 4819) +- `src.app_controller._api_get_key` (line 100) +- `src.app_controller._handle_drag` (line 613) +- `src.app_controller._rag_search_result` (line 3488) +- `src.app_controller._deserialize_active_track_result` (line 2195) +- `src.app_controller.rag_source` (line 1680) +- `src.app_controller.start_services` (line 2560) +- `src.app_controller._handle_select_list_item` (line 628) +- `src.app_controller._cb_apply_view_preset` (line 3714) +- `src.app_controller._handle_refresh_from_project` (line 741) +- `src.app_controller._handle_ask` (line 635) +- `src.app_controller._cb_delete_bias_profile` (line 3678) +- `src.app_controller._on_tool_log` (line 4230) +- `src.app_controller._cb_load_workspace_profile` (line 2930) +- `src.app_controller.__getattr__` (line 1273) +- `src.app_controller._init_ai_and_hooks` (line 2718) +- `src.app_controller._report_worker_error` (line 3528) +- `src.app_controller._handle_ticket_completed` (line 710) +- `src.app_controller._cb_create_track` (line 4944) +- `src.app_controller._confirm_and_run` (line 4402) +- `src.app_controller._set_mcp_config_json_result` (line 1745) +- `src.app_controller.get_api_key` (line 2823) +- `src.app_controller.mcp_config_json` (line 1737) +- `src.app_controller._handle_set_ai_status` (line 521) +- `src.app_controller._handle_mma_stream` (line 529) +- `src.app_controller.post_api_session` (line 2850) +- `src.app_controller._cb_save_bias_profile` (line 3671) +- `src.app_controller._on_performance_alert` (line 3038) - `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._handle_refresh_api_metrics` (line 517) +- `src.app_controller._on_warmup_complete_for_timeline` (line 1504) +- `src.app_controller.set_vendor_quota` (line 3101) +- `src.app_controller._switch_project` (line 3193) +- `src.app_controller._load_project_from_path_result` (line 2446) +- `src.app_controller._on_sigint` (line 780) +- `src.app_controller._start_track_logic` (line 4721) +- `src.app_controller._switch_discussion` (line 3749) +- `src.app_controller._handle_right_click` (line 621) +- `src.app_controller._handle_show_patch_modal` (line 745) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._cb_delete_view_preset` (line 3724) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.rag_mcp_tool` (line 1721) +- `src.app_controller._cb_delete_workspace_profile` (line 2921) +- `src.app_controller._handle_mma_respond` (line 4972) +- `src.app_controller._api_post_api_session` (line 178) +- `src.app_controller._execute_gui_task_result` (line 1866) +- `src.app_controller._handle_ticket_started` (line 689) +- `src.app_controller.post_gui` (line 2841) +- `src.app_controller._cb_load_track` (line 5000) +- `src.app_controller._cb_save_persona` (line 3682) +- `src.app_controller._parse_token_history_first_ts_result` (line 2232) +- `src.app_controller.rag_collection_name` (line 1728) +- `src.app_controller._handle_set_comms_dirty` (line 733) +- `src.app_controller.ai_status` (line 1602) +- `src.app_controller._cb_new_project_automated` (line 3131) +- `src.app_controller._handle_mma_spawn_approval` (line 662) +- `src.app_controller._handle_bead_updated` (line 721) +- `src.app_controller._handle_ai_response` (line 428) -### `src\models.py` (22 consumers) +### `src\beads_client.py` (3 consumers) + +- `src.beads_client.create_bead` (line 42) +- `src.beads_client.update_bead` (line 55) +- `src.beads_client._write_beads` (line 82) + +### `src\code_path_audit.py` (30 consumers) + +- `src.code_path_audit.aggregate_cross_audit_findings` (line 785) +- `src.code_path_audit.classify_memory_dim` (line 399) +- `src.code_path_audit.estimate_call_frequency` (line 507) +- `src.code_path_audit.detect_access_pattern` (line 444) +- `src.code_path_audit.file_origin_memory_dim` (line 391) +- `src.code_path_audit.synthesize_aggregate_profile` (line 1111) +- `src.code_path_audit.read_input_json` (line 660) +- `src.code_path_audit.is_hot_cold_split` (line 425) +- `src.code_path_audit.P3_pass` (line 280) +- `src.code_path_audit.load_frequency_overrides` (line 494) +- `src.code_path_audit.add_field_access` (line 169) +- `src.code_path_audit._atom` (line 865) +- `src.code_path_audit.build_pcg` (line 300) +- `src.code_path_audit.dominant_pattern` (line 433) +- `src.code_path_audit.P2_pass` (line 264) +- `src.code_path_audit.detect_frequency_from_entry_point` (line 478) +- `src.code_path_audit.compute_result_coverage` (line 741) +- `src.code_path_audit._resolve_aliases` (line 224) +- `src.code_path_audit.run_audit` (line 1217) +- `src.code_path_audit.P1_pass` (line 249) +- `src.code_path_audit.to_dsl_v2` (line 871) +- `src.code_path_audit.compute_decomposition_cost` (line 627) +- `src.code_path_audit.code_path_audit_v2` (line 1349) +- `src.code_path_audit.parse_dsl_v2` (line 1034) +- `src.code_path_audit.run_all_cross_audit_reads` (line 823) +- `src.code_path_audit.add_producer` (line 163) +- `src.code_path_audit.load_memory_dim_overrides` (line 378) +- `src.code_path_audit.add_consumer` (line 166) +- `src.code_path_audit.generate_rationale` (line 606) +- `src.code_path_audit.find_enclosing_function` (line 730) + +### `src\code_path_audit_analysis.py` (10 consumers) + +- `src.code_path_audit_analysis.compute_real_type_alias_coverage` (line 222) +- `src.code_path_audit_analysis.analyze_consumer_pattern` (line 164) +- `src.code_path_audit_analysis.aggregate_pattern_from_consumers` (line 181) +- `src.code_path_audit_analysis.analyze_producer_size` (line 117) +- `src.code_path_audit_analysis.compute_real_decomposition_cost` (line 276) +- `src.code_path_audit_analysis.estimate_struct_size` (line 257) +- `src.code_path_audit_analysis._field_names_for_aggregate` (line 32) +- `src.code_path_audit_analysis._analyze_function_field_accesses` (line 41) +- `src.code_path_audit_analysis.extract_real_optimization_candidates` (line 327) +- `src.code_path_audit_analysis.analyze_consumer_fields` (line 78) + +### `src\code_path_audit_cross_audit.py` (7 consumers) + +- `src.code_path_audit_cross_audit._normalize_path` (line 66) +- `src.code_path_audit_cross_audit.map_finding_to_aggregates` (line 71) +- `src.code_path_audit_cross_audit.aggregate_findings` (line 93) +- `src.code_path_audit_cross_audit._all_function_refs` (line 24) +- `src.code_path_audit_cross_audit._aggregate_for_fqname` (line 51) +- `src.code_path_audit_cross_audit._file_to_aggregates` (line 36) +- `src.code_path_audit_cross_audit.build_cross_audit_findings_for_aggregate` (line 130) + +### `src\code_path_audit_ssdl.py` (8 consumers) + +- `src.code_path_audit_ssdl.render_organization_deductions` (line 259) +- `src.code_path_audit_ssdl.detect_nil_check_pattern` (line 84) +- `src.code_path_audit_ssdl.count_branches_in_function` (line 58) +- `src.code_path_audit_ssdl._resolve_filepath` (line 31) +- `src.code_path_audit_ssdl.render_ssdl_rollup` (line 221) +- `src.code_path_audit_ssdl.compute_effective_codepaths` (line 39) +- `src.code_path_audit_ssdl.render_ssdl_sketch` (line 175) +- `src.code_path_audit_ssdl.suggest_defusing_technique` (line 128) + +### `src\command_palette.py` (11 consumers) + +- `src.command_palette.fuzzy_match` (line 54) +- `src.command_palette._close_palette` (line 107) +- `src.command_palette.render_palette_modal` (line 128) +- `src.command_palette._compute_score` (line 75) +- `src.command_palette.register` (line 32) +- `src.command_palette._is_subsequence` (line 67) +- `src.command_palette._count_gaps` (line 95) +- `src.command_palette._is_contiguous` (line 91) +- `src.command_palette._execute` (line 116) +- `src.command_palette._starts_at_word_boundary` (line 85) +- `src.command_palette.get` (line 50) + +### `src\commands.py` (4 consumers) + +- `src.commands._toggle_window` (line 64) +- `src.commands.register` (line 39) +- `src.commands.__getattr__` (line 43) +- `src.commands._toggle_attr` (line 70) + +### `src\conductor_tech_lead.py` (2 consumers) + +- `src.conductor_tech_lead.topological_sort` (line 107) +- `src.conductor_tech_lead.generate_tickets` (line 45) + +### `src\context_presets.py` (3 consumers) + +- `src.context_presets.load_all` (line 10) +- `src.context_presets.delete_preset` (line 28) +- `src.context_presets.save_preset` (line 22) + +### `src\cost_tracker.py` (1 consumer) + +- `src.cost_tracker.estimate_cost` (line 66) + +### `src\dag_engine.py` (2 consumers) + +- `src.dag_engine.update_task_status` (line 217) +- `src.dag_engine.approve_task` (line 206) + +### `src\diff_viewer.py` (4 consumers) + +- `src.diff_viewer.get_line_color` (line 117) +- `src.diff_viewer.parse_diff` (line 49) +- `src.diff_viewer.parse_hunk_header` (line 27) +- `src.diff_viewer.apply_patch_to_file` (line 126) + +### `src\events.py` (5 consumers) + +- `src.events.__init__` (line 156) +- `src.events._make_serializable` (line 170) +- `src.events.emit` (line 66) +- `src.events.put` (line 100) +- `src.events.on` (line 54) + +### `src\external_editor.py` (5 consumers) + +- `src.external_editor.launch_diff` (line 37) +- `src.external_editor.launch_editor` (line 50) +- `src.external_editor.create_temp_modified_file` (line 147) +- `src.external_editor.build_diff_command` (line 30) +- `src.external_editor.get_editor` (line 22) + +### `src\file_cache.py` (17 consumers) + +- `src.file_cache.walk` (line 799) +- `src.file_cache.walk` (line 646) +- `src.file_cache.__init__` (line 78) +- `src.file_cache.walk` (line 549) +- `src.file_cache.get_targeted_view` (line 371) +- `src.file_cache.get_skeleton` (line 207) +- `src.file_cache.deep_search` (line 858) +- `src.file_cache.get_curated_view` (line 291) +- `src.file_cache.deep_search` (line 705) +- `src.file_cache.get_cached_tree` (line 100) +- `src.file_cache.update_definition` (line 790) +- `src.file_cache.get_definition` (line 538) +- `src.file_cache._get_mtime_safe` (line 48) +- `src.file_cache.get_code_outline` (line 748) +- `src.file_cache.parse` (line 93) +- `src.file_cache.get_signature` (line 636) +- `src.file_cache.deep_search` (line 608) + +### `src\fuzzy_anchor.py` (3 consumers) + +- `src.fuzzy_anchor.create_slice` (line 20) +- `src.fuzzy_anchor.resolve_slice` (line 40) +- `src.fuzzy_anchor.get_context` (line 9) + +### `src\gemini_cli_adapter.py` (3 consumers) + +- `src.gemini_cli_adapter.send` (line 61) +- `src.gemini_cli_adapter.__init__` (line 51) +- `src.gemini_cli_adapter.count_tokens` (line 191) + +### `src\gui_2.py` (44 consumers) + +- `src.gui_2.ui_screenshot_paths` (line 1018) +- `src.gui_2._drain_normalize_errors` (line 7417) +- `src.gui_2.current_model` (line 784) +- `src.gui_2.delete_context_preset` (line 989) +- `src.gui_2._resolve_font_path_result` (line 227) +- `src.gui_2._diag_layout_state_ini_text_result` (line 8373) +- `src.gui_2._tier_stream_scroll_sync_result` (line 1644) +- `src.gui_2._render_ast_inspector_file_content_result` (line 7896) +- `src.gui_2.render_discussion_entry_read_mode` (line 4824) +- `src.gui_2.render_path_field` (line 2494) +- `src.gui_2.ui_file_paths` (line 999) +- `src.gui_2.truncate_entries` (line 173) +- `src.gui_2._simulate_save_preset` (line 547) +- `src.gui_2._on_warmup_complete_callback` (line 4979) +- `src.gui_2._cb_kill_ticket` (line 1403) +- `src.gui_2._ticket_id_max_int_result` (line 1694) +- `src.gui_2._test_callback_func_write_to_file` (line 1030) +- `src.gui_2._load_fonts_main_result` (line 7578) +- `src.gui_2._on_warmup_complete_callback_result` (line 1609) +- `src.gui_2.render_thinking_trace` (line 4672) +- `src.gui_2.__getattr__` (line 73) +- `src.gui_2._set_context_files` (line 542) +- `src.gui_2.render_text_viewer` (line 154) +- `src.gui_2.__setattr__` (line 749) +- `src.gui_2.__init__` (line 7539) +- `src.gui_2.render_discussion_entry` (line 4720) +- `src.gui_2._render_ast_inspector_outline_result` (line 7863) +- `src.gui_2.render_tier_stream_panel` (line 6905) +- `src.gui_2._save_context_preset_force` (line 366) +- `src.gui_2._set_external_editor_default` (line 1242) +- `src.gui_2.render_heavy_text` (line 6400) +- `src.gui_2.__init__` (line 52) +- `src.gui_2._cb_block_ticket` (line 1407) +- `src.gui_2._render_window_if_open` (line 1113) +- `src.gui_2._populate_auto_slices_outline_result` (line 7926) +- `src.gui_2.render_selectable_label` (line 161) +- `src.gui_2._cb_unblock_ticket` (line 1426) +- `src.gui_2.request_patch_from_tier4_result` (line 8089) +- `src.gui_2.load_context_preset` (line 972) +- `src.gui_2.current_provider` (line 776) +- `src.gui_2._capture_workspace_profile` (line 881) +- `src.gui_2.cb_load_prior_log` (line 1235) +- `src.gui_2.request_patch_from_tier4` (line 1379) +- `src.gui_2.__getattr__` (line 742) + +### `src\history.py` (5 consumers) + +- `src.history.undo` (line 92) +- `src.history.push` (line 80) +- `src.history.jump_to_undo` (line 129) +- `src.history.redo` (line 103) +- `src.history.from_dict` (line 45) + +### `src\hot_reloader.py` (4 consumers) + +- `src.hot_reloader.capture_state` (line 33) +- `src.hot_reloader.reload` (line 42) +- `src.hot_reloader.restore_state` (line 37) +- `src.hot_reloader.reload_all` (line 69) + +### `src\imgui_scopes.py` (26 consumers) + +- `src.imgui_scopes.__init__` (line 206) +- `src.imgui_scopes.__init__` (line 157) +- `src.imgui_scopes.tab_bar` (line 187) +- `src.imgui_scopes.style_var` (line 155) +- `src.imgui_scopes.style_color` (line 141) +- `src.imgui_scopes.__init__` (line 171) +- `src.imgui_scopes.__init__` (line 95) +- `src.imgui_scopes.menu` (line 62) +- `src.imgui_scopes.tree_node_ex` (line 243) +- `src.imgui_scopes.__init__` (line 262) +- `src.imgui_scopes.child` (line 9) +- `src.imgui_scopes.__init__` (line 11) +- `src.imgui_scopes.__init__` (line 245) +- `src.imgui_scopes.window` (line 260) +- `src.imgui_scopes.id` (line 37) +- `src.imgui_scopes.tab_item` (line 204) +- `src.imgui_scopes.__init__` (line 39) +- `src.imgui_scopes.table` (line 169) +- `src.imgui_scopes.popup_modal` (line 122) +- `src.imgui_scopes.node` (line 93) +- `src.imgui_scopes.__init__` (line 64) +- `src.imgui_scopes.__init__` (line 189) +- `src.imgui_scopes.__init__` (line 124) +- `src.imgui_scopes.__init__` (line 143) +- `src.imgui_scopes.popup` (line 106) +- `src.imgui_scopes.__init__` (line 108) + +### `src\log_pruner.py` (1 consumer) + +- `src.log_pruner.__init__` (line 18) + +### `src\log_registry.py` (9 consumers) + +- `src.log_registry.update_auto_whitelist_status` (line 329) +- `src.log_registry.is_session_whitelisted` (line 313) +- `src.log_registry.__getitem__` (line 93) +- `src.log_registry.from_dict` (line 113) +- `src.log_registry.get` (line 105) +- `src.log_registry.set_session_start_time` (line 283) +- `src.log_registry.__init__` (line 142) +- `src.log_registry.update_session_metadata` (line 249) +- `src.log_registry.register_session` (line 223) + +### `src\markdown_helper.py` (14 consumers) + +- `src.markdown_helper.render_unindented` (line 404) +- `src.markdown_helper._normalize_nested_list_endings` (line 228) +- `src.markdown_helper._normalize_bullet_delimiters` (line 215) +- `src.markdown_helper._render_code_block` (line 307) +- `src.markdown_helper.render_code` (line 370) +- `src.markdown_helper.render_unindented` (line 303) +- `src.markdown_helper.render` (line 128) +- `src.markdown_helper.render` (line 398) +- `src.markdown_helper._on_open_link` (line 108) +- `src.markdown_helper._normalize_list_continuations` (line 254) +- `src.markdown_helper.render_code` (line 407) +- `src.markdown_helper.detect_language` (line 378) +- `src.markdown_helper._is_likely_lang_tag` (line 375) +- `src.markdown_helper._get_language_id` (line 26) + +### `src\markdown_table.py` (3 consumers) + +- `src.markdown_table._split_row` (line 36) +- `src.markdown_table.parse_tables` (line 47) +- `src.markdown_table._is_table_at` (line 42) + +### `src\mcp_client.py` (94 consumers) + +- `src.mcp_client.get_file_slice` (line 1108) +- `src.mcp_client.py_update_definition_result` (line 663) +- `src.mcp_client.read_file` (line 203) +- `src.mcp_client._ast_update_definition` (line 432) +- `src.mcp_client.py_get_symbol_info_result` (line 629) +- `src.mcp_client.fetch_url_result` (line 1043) +- `src.mcp_client.handle_starttag` (line 1564) +- `src.mcp_client.ts_cpp_update_definition` (line 1269) +- `src.mcp_client.ts_cpp_get_signature` (line 1257) +- `src.mcp_client.ts_c_get_code_outline_result` (line 451) +- `src.mcp_client.async_dispatch` (line 1752) +- `src.mcp_client.list_directory_result` (line 256) +- `src.mcp_client.py_get_imports` (line 1443) +- `src.mcp_client.search_files` (line 177) +- `src.mcp_client.ts_c_get_signature_result` (line 481) +- `src.mcp_client.py_get_var_declaration_result` (line 767) +- `src.mcp_client.read_file_result` (line 239) +- `src.mcp_client.ts_cpp_get_signature_result` (line 561) +- `src.mcp_client.derive_code_path` (line 1491) +- `src.mcp_client.py_get_symbol_info` (line 1335) +- `src.mcp_client.py_get_hierarchy` (line 1467) +- `src.mcp_client.py_set_signature_result` (line 714) +- `src.mcp_client.py_set_var_declaration` (line 1419) +- `src.mcp_client.py_check_syntax_result` (line 880) +- `src.mcp_client.ts_c_get_skeleton` (line 1149) +- `src.mcp_client.py_set_var_declaration_result` (line 789) +- `src.mcp_client.py_get_imports_result` (line 853) +- `src.mcp_client.ts_c_get_code_outline` (line 1163) +- `src.mcp_client.py_get_definition` (line 1347) +- `src.mcp_client.set_file_slice` (line 1120) +- `src.mcp_client.search_files_result` (line 284) +- `src.mcp_client.py_update_definition` (line 1359) +- `src.mcp_client.find_in_scope` (line 1289) +- `src.mcp_client.handle_data` (line 1572) +- `src.mcp_client.ts_cpp_get_code_outline_result` (line 530) +- `src.mcp_client._get_symbol_node` (line 1285) +- `src.mcp_client.web_search_result` (line 1026) +- `src.mcp_client.py_get_code_outline` (line 1323) +- `src.mcp_client.py_get_signature` (line 1371) +- `src.mcp_client.py_get_docstring` (line 1479) +- `src.mcp_client.derive_code_path_result` (line 923) +- `src.mcp_client.get_file_slice_result` (line 357) +- `src.mcp_client.edit_file_result` (line 312) +- `src.mcp_client._ast_get_definition` (line 424) +- `src.mcp_client.py_get_code_outline_result` (line 612) +- `src.mcp_client.configure` (line 108) +- `src.mcp_client.web_search` (line 1578) +- `src.mcp_client.handle_starttag` (line 1527) +- `src.mcp_client.get_tree_result` (line 992) +- `src.mcp_client.ts_cpp_get_definition_result` (line 546) +- `src.mcp_client.async_dispatch` (line 1939) +- `src.mcp_client.py_get_class_summary_result` (line 737) +- `src.mcp_client.get_file_summary` (line 1093) +- `src.mcp_client.py_get_skeleton_result` (line 595) +- `src.mcp_client.handle_data` (line 1551) +- `src.mcp_client._ast_get_signature` (line 428) +- `src.mcp_client.get_tree` (line 1505) +- `src.mcp_client.py_set_signature` (line 1383) +- `src.mcp_client.fetch_url` (line 1590) +- `src.mcp_client.handle_endtag` (line 1568) +- `src.mcp_client.py_get_docstring_result` (line 898) +- `src.mcp_client.set_file_slice_result` (line 374) +- `src.mcp_client.py_check_syntax` (line 1455) +- `src.mcp_client.edit_file` (line 1079) +- `src.mcp_client._ast_get_skeleton` (line 416) +- `src.mcp_client._ast_get_code_outline` (line 420) +- `src.mcp_client.dispatch` (line 1772) +- `src.mcp_client.get_git_diff` (line 1132) +- `src.mcp_client.ts_cpp_get_code_outline` (line 1231) +- `src.mcp_client.ts_c_update_definition` (line 1201) +- `src.mcp_client._build_tree` (line 1002) +- `src.mcp_client.py_get_signature_result` (line 684) +- `src.mcp_client.py_get_skeleton` (line 1311) +- `src.mcp_client.py_get_var_declaration` (line 1407) +- `src.mcp_client.py_find_usages_result` (line 811) +- `src.mcp_client._send_request` (line 1678) +- `src.mcp_client.get_git_diff_result` (line 397) +- `src.mcp_client.ts_cpp_update_definition_result` (line 576) +- `src.mcp_client.ts_c_get_skeleton_result` (line 436) +- `src.mcp_client._resolve_and_check_result` (line 216) +- `src.mcp_client.ts_c_get_definition` (line 1177) +- `src.mcp_client.ts_c_get_signature` (line 1189) +- `src.mcp_client.py_get_definition_result` (line 646) +- `src.mcp_client.list_directory` (line 191) +- `src.mcp_client.ts_cpp_get_skeleton_result` (line 515) +- `src.mcp_client.handle_endtag` (line 1536) +- `src.mcp_client.py_find_usages` (line 1431) +- `src.mcp_client.ts_c_update_definition_result` (line 496) +- `src.mcp_client.py_get_class_summary` (line 1395) +- `src.mcp_client.call_tool` (line 1704) +- `src.mcp_client.ts_c_get_definition_result` (line 466) +- `src.mcp_client.ts_cpp_get_skeleton` (line 1217) +- `src.mcp_client.get_file_summary_result` (line 340) +- `src.mcp_client.ts_cpp_get_definition` (line 1245) + +### `src\mcp_tool_specs.py` (1 consumer) + +- `src.mcp_tool_specs.get_tool_spec` (line 67) + +### `src\models.py` (29 consumers) -- `src.models.from_dict` (line 575) -- `src.models.from_dict` (line 656) -- `src.models.from_dict` (line 920) -- `src.models.from_dict` (line 416) -- `src.models.from_dict` (line 1072) -- `src.models.from_dict` (line 295) - `src.models.from_dict` (line 506) -- `src.models.from_dict` (line 603) -- `src.models.from_dict` (line 814) -- `src.models.from_dict` (line 378) - `src.models.from_dict` (line 893) - `src.models.from_dict` (line 1038) -- `src.models.from_dict` (line 1007) -- `src.models.from_dict` (line 712) -- `src.models._save_config_to_disk` (line 199) - `src.models.from_dict` (line 866) +- `src.models.load_mcp_config` (line 1084) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 378) +- `src.models.mark_blocked` (line 319) - `src.models.from_dict` (line 747) -- `src.models.from_dict` (line 683) +- `src.models.get` (line 349) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 1072) +- `src.models.__getattr__` (line 271) - `src.models.from_dict` (line 630) -- `src.models.from_dict` (line 454) - `src.models.from_dict` (line 949) +- `src.models._clean_nones` (line 179) +- `src.models.parse_history_entries` (line 214) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 603) - `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.mark_manual_block` (line 326) +- `src.models.from_dict` (line 454) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 1007) -### `src\project_manager.py` (5 consumers) +### `src\module_loader.py` (1 consumer) + +- `src.module_loader._require_warmed` (line 35) + +### `src\multi_agent_conductor.py` (16 consumers) + +- `src.multi_agent_conductor.update_task_status` (line 166) +- `src.multi_agent_conductor.approve_task` (line 158) +- `src.multi_agent_conductor.update_usage` (line 137) +- `src.multi_agent_conductor.confirm_execution` (line 367) +- `src.multi_agent_conductor.worker_comms_callback` (line 574) +- `src.multi_agent_conductor.confirm_spawn` (line 391) +- `src.multi_agent_conductor._count_tokens` (line 492) +- `src.multi_agent_conductor.kill_worker` (line 174) +- `src.multi_agent_conductor._push_state` (line 192) +- `src.multi_agent_conductor.parse_json_tickets` (line 208) +- `src.multi_agent_conductor.clutch_callback` (line 558) +- `src.multi_agent_conductor.run_worker_lifecycle` (line 433) +- `src.multi_agent_conductor.spawn` (line 64) +- `src.multi_agent_conductor.run` (line 240) +- `src.multi_agent_conductor.stream_callback` (line 569) +- `src.multi_agent_conductor._queue_put` (line 362) + +### `src\openai_compatible.py` (5 consumers) + +- `src.openai_compatible._send_streaming` (line 133) +- `src.openai_compatible._classify_openai_compatible_error` (line 58) +- `src.openai_compatible._send_blocking` (line 116) +- `src.openai_compatible._to_typed_tool_call` (line 43) +- `src.openai_compatible.send_openai_compatible` (line 80) + +### `src\orchestrator_pm.py` (1 consumer) + +- `src.orchestrator_pm.generate_tracks` (line 58) + +### `src\outline_tool.py` (2 consumers) + +- `src.outline_tool.outline` (line 44) +- `src.outline_tool.get_outline` (line 127) + +### `src\patch_modal.py` (2 consumers) + +- `src.patch_modal.apply_patch` (line 57) +- `src.patch_modal.request_patch_approval` (line 19) + +### `src\paths.py` (5 consumers) + +- `src.paths.get_archive_dir` (line 250) +- `src.paths.get_tracks_dir` (line 242) +- `src.paths.get_track_state_dir` (line 246) +- `src.paths.get_conductor_dir` (line 271) +- `src.paths._resolve_path` (line 104) + +### `src\performance_monitor.py` (8 consumers) + +- `src.performance_monitor.get_history` (line 269) +- `src.performance_monitor.scope` (line 281) +- `src.performance_monitor._add_to_history` (line 140) +- `src.performance_monitor.start_component` (line 207) +- `src.performance_monitor._get_avg` (line 155) +- `src.performance_monitor.end_component` (line 216) +- `src.performance_monitor.__exit__` (line 77) +- `src.performance_monitor.__init__` (line 71) + +### `src\personas.py` (5 consumers) + +- `src.personas.save_persona` (line 49) +- `src.personas._save_file` (line 98) +- `src.personas.get_persona_scope` (line 61) +- `src.personas._get_path` (line 16) +- `src.personas.delete_persona` (line 76) + +### `src\presets.py` (4 consumers) + +- `src.presets.get_preset_scope` (line 84) +- `src.presets._save_file` (line 117) +- `src.presets.delete_preset` (line 70) +- `src.presets.save_preset` (line 52) + +### `src\project_manager.py` (16 consumers) -- `src.project_manager.migrate_from_legacy_config` (line 253) - `src.project_manager.save_project` (line 229) -- `src.project_manager.format_discussion` (line 69) -- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.save_track_history` (line 329) - `src.project_manager.flat_config` (line 267) +- `src.project_manager.branch_discussion` (line 453) +- `src.project_manager.load_track_state` (line 300) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.clean_nones` (line 220) +- `src.project_manager.promote_take` (line 471) +- `src.project_manager.save_track_state` (line 289) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.parse_ts` (line 42) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.get_git_commit` (line 104) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.load_track_history` (line 314) + +### `src\provider_state.py` (1 consumer) + +- `src.provider_state.get_history` (line 57) + +### `src\qwen_adapter.py` (2 consumers) + +- `src.qwen_adapter.classify_dashscope_error` (line 26) +- `src.qwen_adapter.build_dashscope_tools` (line 13) + +### `src\rag_engine.py` (18 consumers) + +- `src.rag_engine.embed` (line 72) +- `src.rag_engine.__init__` (line 69) +- `src.rag_engine._check_existing_index_result` (line 260) +- `src.rag_engine._chunk_code_result` (line 226) +- `src.rag_engine.embed` (line 64) +- `src.rag_engine._parse_search_response_result` (line 88) +- `src.rag_engine.embed` (line 56) +- `src.rag_engine.index_file` (line 289) +- `src.rag_engine.delete_documents` (line 374) +- `src.rag_engine.__init__` (line 105) +- `src.rag_engine.add_documents` (line 196) +- `src.rag_engine._get_file_mtime_result` (line 250) +- `src.rag_engine.delete_documents_by_path` (line 390) +- `src.rag_engine.search` (line 349) +- `src.rag_engine._chunk_text` (line 210) +- `src.rag_engine._read_file_content_result` (line 278) +- `src.rag_engine.__init__` (line 60) +- `src.rag_engine._search_mcp` (line 339) + +### `src\session_logger.py` (7 consumers) + +- `src.session_logger.log_tool_call` (line 166) +- `src.session_logger.open_session` (line 60) +- `src.session_logger.log_comms` (line 152) +- `src.session_logger.reset_session` (line 135) +- `src.session_logger.log_api_hook` (line 140) +- `src.session_logger.log_tool_output` (line 211) +- `src.session_logger.log_cli_call` (line 234) + +### `src\shell_runner.py` (1 consumer) + +- `src.shell_runner.run_powershell` (line 58) + +### `src\startup_profiler.py` (2 consumers) + +- `src.startup_profiler.phase` (line 49) +- `src.startup_profiler._log_phase_output` (line 17) + +### `src\summarize.py` (7 consumers) + +- `src.summarize.build_summary_markdown` (line 212) +- `src.summarize.summarise_file` (line 159) +- `src.summarize._summarise_markdown` (line 105) +- `src.summarize._summarise_python` (line 31) +- `src.summarize._summarise_toml` (line 78) +- `src.summarize._summarise_generic` (line 121) +- `src.summarize.summarise_items` (line 194) + +### `src\summary_cache.py` (4 consumers) + +- `src.summary_cache.set_summary` (line 70) +- `src.summary_cache.get_file_hash` (line 10) +- `src.summary_cache.__init__` (line 22) +- `src.summary_cache.get_summary` (line 57) + +### `src\synthesis_formatter.py` (1 consumer) + +- `src.synthesis_formatter.format_takes_diff` (line 1) + +### `src\theme_2.py` (17 consumers) + +- `src.theme_2.set_gamma` (line 93) +- `src.theme_2.get_brightness` (line 87) +- `src.theme_2.get_gamma` (line 89) +- `src.theme_2.get_contrast` (line 88) +- `src.theme_2.set_contrast` (line 92) +- `src.theme_2.load_from_config` (line 320) +- `src.theme_2.get_role_tint` (line 204) +- `src.theme_2.set_brightness` (line 91) +- `src.theme_2.get_color` (line 153) +- `src.theme_2.reset_tone_mapping` (line 95) +- `src.theme_2.apply_syntax_palette` (line 359) +- `src.theme_2.apply` (line 213) +- `src.theme_2.render_post_fx` (line 401) +- `src.theme_2.save_to_config` (line 302) +- `src.theme_2._get_tm` (line 84) +- `src.theme_2._tone_map` (line 100) +- `src.theme_2.get_syntax_palette_for_theme` (line 351) + +### `src\theme_models.py` (6 consumers) + +- `src.theme_models.from_dict` (line 145) +- `src.theme_models.from_dict` (line 100) +- `src.theme_models.with_scope` (line 127) +- `src.theme_models.load_themes_from_toml` (line 200) +- `src.theme_models.load_themes_from_dir` (line 181) +- `src.theme_models.load_theme_file` (line 166) + +### `src\theme_nerv_fx.py` (1 consumer) + +- `src.theme_nerv_fx.update` (line 79) + +### `src\thinking_parser.py` (3 consumers) + +- `src.thinking_parser.parse_thinking_trace` (line 8) +- `src.thinking_parser.extract_colon_blocks` (line 41) +- `src.thinking_parser.extract_tags` (line 22) + +### `src\tool_presets.py` (6 consumers) + +- `src.tool_presets.delete_bias_profile` (line 129) +- `src.tool_presets._get_path` (line 15) +- `src.tool_presets.save_bias_profile` (line 118) +- `src.tool_presets.delete_preset` (line 81) +- `src.tool_presets._write_raw` (line 37) +- `src.tool_presets.save_preset` (line 70) + +### `src\vendor_capabilities.py` (2 consumers) + +- `src.vendor_capabilities.list_models_for_vendor` (line 44) +- `src.vendor_capabilities.get_capabilities` (line 37) + +### `src\warmup.py` (7 consumers) + +- `src.warmup.submit` (line 92) +- `src.warmup._record_failure` (line 231) +- `src.warmup._warmup_one` (line 170) +- `src.warmup._record_success` (line 192) +- `src.warmup._log_stderr` (line 314) +- `src.warmup._fire_callback` (line 328) +- `src.warmup._log_canary` (line 266) + +### `src\workspace_manager.py` (4 consumers) + +- `src.workspace_manager.delete_profile` (line 62) +- `src.workspace_manager._save_file` (line 81) +- `src.workspace_manager._get_path` (line 20) +- `src.workspace_manager.save_profile` (line 50) ## Field access matrix -| consumer | _est_tokens | _gemini_cache_text | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _recalculate_session_usage | _start_track_logic_result | _token_history | _token_stats | _topological_sort_tickets_result | _update_cached_stats | active_discussion | active_project_path | active_project_root | ai_status | append | +| consumer | _cb_load_workspace_profile | _dirty | _flags | _id | _load_file | _make_request | _mma_status | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_history_adds | _pending_history_adds_lock | _read_beads | _redo_stack | _report_worker_error | _size | _token_history | _undo_stack | _write_beads | active_discussion | |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_refresh_api_metrics` | . | 1 | . | . | . | . | . | . | . | 1 | . | . | 1 | . | 1 | . | . | . | . | . | | `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_add_history_cache_breakpoint` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_append_comms` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `aggregate_cross_audit_findings` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `approve_mma_ticket` | . | . | . | . | . | 1 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `update_auto_whitelist_status` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | | `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | -| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `migrate_from_legacy_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_on_comms_entry` | . | . | 1 | 1 | 1 | . | . | 4 | 4 | . | . | 1 | . | . | . | . | . | . | . | . | -| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_trim_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_start_track_logic` | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | . | 1 | . | -| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | | `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | | `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | -| `_pre_dispatch` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `send` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_start_track_logic_result` | . | . | . | . | . | 2 | 2 | . | . | . | . | . | . | 1 | . | 1 | 1 | 1 | 4 | . | -| `_send_minimax` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run_tier4_analysis` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_flush_to_project_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `classify_memory_dim` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `__init__` | . | . | 1 | 1 | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | . | . | +| `create_bead` | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | 1 | . | +| `fuzzy_match` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `set_gamma` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `update_task_status` | . | 1 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `estimate_call_frequency` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `walk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `detect_access_pattern` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_get_app_attr` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | | `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_estimate_prompt_tokens` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_build_files_section_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_estimate_message_tokens` | 1 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_handle_mma_state_update` | 1 | . | . | . | . | . | 2 | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_list_deepseek_models` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `__init__` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | . | . | . | . | . | . | . | 1 | 1 | 1 | 4 | 4 | . | . | . | . | 1 | . | . | . | +| `approve_task` | . | 1 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ui_screenshot_paths` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `__init__` | . | . | 1 | 1 | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | . | . | +| `_extract_gemini_thoughts_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `get_brightness` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `undo` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | 2 | . | . | +| `_drain_normalize_errors` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_rename_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | +| `get_file_slice` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `tab_bar` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `log_tool_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `current_model` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `embed` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `get_preset_scope` | . | . | . | . | 2 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `file_origin_memory_dim` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `__init__` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `get_gamma` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `style_var` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_file` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `is_absolute_with_drive` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_topological_sort_tickets_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | +| `ui_file_paths` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `rag_emb_provider` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `synthesize_aggregate_profile` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_check_existing_index_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -_... 35 more fields_ +_... 33 more fields_ ## Access pattern **Dominant pattern:** whole_struct -**Evidence count:** 66 +**Evidence count:** 50 **Per-function pattern distribution:** -- `whole_struct`: 35 functions (53%) -- `mixed`: 26 functions (39%) -- `field_by_field`: 5 functions (8%) +- `whole_struct`: 34 functions (68%) +- `mixed`: 10 functions (20%) +- `field_by_field`: 6 functions (12%) ## SSDL Sketch for `Metadata` ``` [Q:Metadata entry-point] -> [Q:PCG lookup] - -> [1: build_markdown_from_items] [B:check] (branches=9) - -> [2: _send_anthropic] [B:is None?] (branches=40) [N:safe] - -> [3: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] - -> [4: from_dict] [B:check] (branches=0) - -> [5: _add_history_cache_breakpoint] [B:check] (branches=5) - -> [6: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [1: from_dict] [B:check] (branches=0) + -> [2: aggregate_cross_audit_findings] [B:is None?] (branches=2) [N:safe] + -> [3: approve_mma_ticket] [B:check] (branches=1) + -> [4: update_auto_whitelist_status] [B:check] (branches=18) + -> [5: from_dict] [B:check] (branches=0) + -> [6: _send_gemini] [B:is None?] (branches=75) [N:safe] -> [7: from_dict] [B:check] (branches=0) - -> [8: from_dict] [B:check] (branches=0) - -> [9: _repair_deepseek_history] [B:check] (branches=6) - -> [10: _dashscope_call] [B:check] (branches=5) - -> [11: from_dict] [B:check] (branches=0) - -> [12: _send_grok] [B:check] (branches=14) - -> [13: from_dict] [B:check] (branches=0) - -> [14: from_dict] [B:check] (branches=0) - -> [15: build_tier3_context] [B:check] (branches=50) - -> [16: build_markdown_no_history] [B:check] (branches=0) - -> [17: from_dict] [B:check] (branches=0) - -> [18: from_dict] [B:check] (branches=0) - -> [19: migrate_from_legacy_config] [B:check] (branches=2) - -> [20: from_dict] [B:check] (branches=0) - -> [21: _on_comms_entry] [B:check] (branches=32) - -> [22: run] [B:check] (branches=1) - -> [23: _trim_minimax_history] [B:check] (branches=8) - -> [24: _start_track_logic] [B:check] (branches=1) - -> [25: save_project] [B:is None?] (branches=7) [N:safe] - -> [26: _send_gemini] [B:is None?] (branches=75) [N:safe] - -> [27: from_dict] [B:check] (branches=0) - -> [28: format_discussion] [B:check] (branches=0) - -> [29: _repair_minimax_history] [B:check] (branches=10) - -> [30: from_dict] [B:check] (branches=0) - -> [31: _repair_anthropic_history] [B:check] (branches=6) - -> [32: _pre_dispatch] [B:check] (branches=8) - -> [33: _strip_stale_file_refreshes] [B:check] (branches=12) - -> [34: send] [B:check] (branches=19) - -> [35: _offload_entry_payload] [B:check] (branches=10) - -> [36: _start_track_logic_result] [B:check] (branches=10) - -> [37: _send_minimax] [B:check] (branches=11) - -> [38: _send_llama_native] [B:check] (branches=12) - -> [39: from_dict] [B:check] (branches=0) - -> [40: _create_gemini_cache_result] [B:check] (branches=3) - -> [41: entry_to_str] [B:check] (branches=3) - -> [42: from_dict] [B:check] (branches=0) - -> [43: from_dict] [B:check] (branches=0) - -> [44: _save_config_to_disk] [B:check] (branches=1) - -> [45: _send_qwen] [B:check] (branches=9) - -> [46: from_dict] [B:check] (branches=0) - -> [47: from_dict] [B:check] (branches=0) - -> [48: _trim_anthropic_history] [B:check] (branches=13) - -> [49: _strip_private_keys] [B:check] (branches=0) - -> [50: _estimate_prompt_tokens] [B:check] (branches=2) - -> [51: ollama_chat] [B:check] (branches=3) - -> [52: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] - -> [53: flat_config] [B:check] (branches=2) - -> [54: _send_deepseek] [B:check] (branches=71) - -> [55: _send_llama] [B:check] (branches=13) - -> [56: _add_bleed_derived] [B:check] (branches=0) - -> [57: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] - -> [58: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] - -> [59: from_dict] [B:check] (branches=0) - -> [60: from_dict] [B:check] (branches=0) - -> [61: _invalidate_token_estimate] [B:check] (branches=0) - -> [62: from_dict] [B:check] (branches=0) - -> [63: _strip_cache_controls] [B:check] (branches=4) - -> [64: from_dict] [B:check] (branches=0) - -> [65: from_dict] [B:check] (branches=0) - -> [66: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [8: save_project] [B:is None?] (branches=7) [N:safe] + -> [9: run_tier4_analysis] [B:check] (branches=0) + -> [10: _flush_to_project_result] [B:check] (branches=2) + -> [11: classify_memory_dim] [B:check] (branches=2) + -> [12: __init__] [B:check] (branches=2) + -> [13: create_bead] [B:check] (branches=0) + -> [14: fuzzy_match] [B:check] (branches=2) + -> [15: set_gamma] [B:check] (branches=0) + -> [16: update_task_status] [B:check] (branches=0) + -> [17: estimate_call_frequency] [B:check] (branches=2) + -> [18: walk] [B:check] (branches=23) + -> [19: detect_access_pattern] [B:is None?] (branches=5) [N:safe] + -> [20: _get_app_attr] [B:check] (branches=3) + -> [21: _send_llama_native] [B:check] (branches=12) + -> [22: _handle_mma_state_update] [B:is None?] (branches=27) [N:safe] + -> [23: _list_deepseek_models] [B:check] (branches=0) + -> [24: __init__] [B:check] (branches=0) + -> [25: _on_comms_entry] [B:check] (branches=32) + -> [26: approve_task] [B:check] (branches=0) + -> [27: ui_screenshot_paths] [B:check] (branches=0) + -> [28: __init__] [B:check] (branches=2) + -> [29: _extract_gemini_thoughts_result] [B:is None?] (branches=9) [N:safe] + -> [30: get_brightness] [B:check] (branches=0) + -> [31: undo] [B:check] (branches=1) + -> [32: _drain_normalize_errors] [B:is None?] (branches=6) [N:safe] + -> [33: _rename_discussion] [B:check] (branches=3) + -> [34: get_file_slice] [B:check] (branches=1) + -> [35: tab_bar] [B:check] (branches=0) + -> [36: log_tool_call] [B:is None?] (branches=8) [N:safe] + -> [37: current_model] [B:check] (branches=0) + -> [38: embed] [B:check] (branches=0) + -> [39: get_preset_scope] [B:check] (branches=3) + -> [40: file_origin_memory_dim] [B:check] (branches=3) + -> [41: __init__] [B:check] (branches=0) + -> [42: get_gamma] [B:check] (branches=0) + -> [43: style_var] [B:check] (branches=0) + -> [44: _save_file] [B:check] (branches=3) + -> [45: is_absolute_with_drive] [B:check] (branches=2) + -> [46: _topological_sort_tickets_result] [B:check] (branches=2) + -> [47: ui_file_paths] [B:check] (branches=0) + -> [48: rag_emb_provider] [B:check] (branches=0) + -> [49: synthesize_aggregate_profile] [B:is None?] (branches=4) [N:safe] + -> [50: _check_existing_index_result] [B:check] (branches=6) + -> [51: read_input_json] [B:check] (branches=5) + -> [52: walk] [B:check] (branches=23) + -> [53: is_session_whitelisted] [B:is None?] (branches=1) [N:safe] + -> [54: py_update_definition_result] [B:check] (branches=6) + -> [55: render_unindented] [B:check] (branches=0) + -> [56: set_summary] [B:check] (branches=2) + -> [57: classify_dashscope_error] [B:check] (branches=5) + -> [58: _cb_save_view_preset] [B:check] (branches=2) + -> [59: delete_context_preset] [B:check] (branches=1) + -> [60: style_color] [B:check] (branches=0) + -> [61: _handle_set_tool_log_dirty] [B:check] (branches=0) + -> [62: read_file] [B:check] (branches=1) + -> [63: _api_get_session] [B:check] (branches=1) + -> [64: get_contrast] [B:check] (branches=0) + -> [65: launch_diff] [B:check] (branches=3) + -> [66: get_archive_dir] [B:check] (branches=0) + -> [67: from_dict] [B:check] (branches=4) + -> [68: _classify_minimax_error] [B:is None?] (branches=21) [N:safe] + -> [69: _chunk_code_result] [B:check] (branches=4) + -> [70: _set_rag_status] [B:check] (branches=1) + -> [71: _resolve_font_path_result] [B:check] (branches=7) + -> [72: _add_bleed_derived] [B:check] (branches=0) + -> [73: __init__] [B:is None?] (branches=0) [N:safe] + -> [74: _diag_layout_state_ini_text_result] [B:check] (branches=3) + -> [75: _ast_update_definition] [B:check] (branches=0) + -> [76: mutate_dag] [B:is None?] (branches=8) [N:safe] + -> [77: py_get_symbol_info_result] [B:check] (branches=5) + -> [78: cb_load_prior_log] [B:is None?] (branches=13) [N:safe] + -> [79: embed] [B:check] (branches=0) + -> [80: from_dict] [B:check] (branches=0) + -> [81: save_track_history] [B:check] (branches=1) + -> [82: set_current_tier] [B:check] (branches=0) + -> [83: _send_cli_round_result] [B:check] (branches=3) + -> [84: _save_fallback_project_result] [B:check] (branches=3) + -> [85: _require_warmed] [B:is None?] (branches=1) [N:safe] + -> [86: load_mcp_config] [B:check] (branches=4) + -> [87: _extract_dashscope_tool_calls] [B:check] (branches=4) + -> [88: fetch_url_result] [B:check] (branches=8) + -> [89: _strip_cache_controls] [B:check] (branches=4) + -> [90: _handle_clear_summary_cache] [B:check] (branches=0) + -> [91: _tier_stream_scroll_sync_result] [B:check] (branches=3) + -> [92: delete_profile] [B:check] (branches=2) + -> [93: _update_gcli_adapter] [B:check] (branches=1) + -> [94: _estimate_prompt_tokens] [B:check] (branches=2) + -> [95: handle_starttag] [B:check] (branches=6) + -> [96: set_contrast] [B:check] (branches=0) + -> [97: _delete_discussion] [B:check] (branches=3) + -> [98: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [99: open_session] [B:is None?] (branches=5) [N:safe] + -> [100: post_project] [B:check] (branches=0) + -> [101: compute_real_type_alias_coverage] [B:check] (branches=6) + -> [102: load_all] [B:check] (branches=3) + -> [103: submit] [B:check] (branches=4) + -> [104: _render_ast_inspector_file_content_result] [B:check] (branches=2) + -> [105: list_models] [B:check] (branches=8) + -> [106: _run_script] [B:is None?] (branches=3) [N:safe] + -> [107: _strip_private_keys] [B:check] (branches=0) + -> [108: load_from_config] [B:check] (branches=1) + -> [109: _handle_click] [B:check] (branches=9) + -> [110: _record_failure] [B:is None?] (branches=14) [N:safe] + -> [111: _parse_search_response_result] [B:check] (branches=5) + -> [112: __init__] [B:check] (branches=2) + -> [113: _toggle_window] [B:check] (branches=2) + -> [114: embed] [B:check] (branches=0) + -> [115: ts_cpp_update_definition] [B:check] (branches=1) + -> [116: ts_cpp_get_signature] [B:check] (branches=1) + -> [117: __init__] [B:check] (branches=0) + -> [118: ts_c_get_code_outline_result] [B:check] (branches=5) + -> [119: _dashscope_exception_from_response] [B:check] (branches=0) + -> [120: update_usage] [B:check] (branches=2) + -> [121: set_agent_tools] [B:check] (branches=0) + -> [122: is_hot_cold_split] [B:check] (branches=1) + -> [123: group_files_by_dir] [B:check] (branches=3) + -> [124: run_tier4_patch_generation] [B:check] (branches=0) + -> [125: _symbol_resolution_result] [B:check] (branches=4) + -> [126: set_bias_profile] [B:check] (branches=2) + -> [127: _build_chunked_context_blocks] [B:check] (branches=2) + -> [128: _normalize_path] [B:check] (branches=0) + -> [129: async_dispatch] [B:check] (branches=2) + -> [130: run_tier4_patch_callback] [B:check] (branches=0) + -> [131: generate_tracks] [B:check] (branches=11) + -> [132: _close_palette] [B:check] (branches=0) + -> [133: _normalize_nested_list_endings] [B:check] (branches=6) + -> [134: list_directory_result] [B:check] (branches=9) + -> [135: __init__] [B:check] (branches=2) + -> [136: current_provider] [B:check] (branches=0) + -> [137: map_finding_to_aggregates] [B:is None?] (branches=1) [N:safe] + -> [138: py_get_imports] [B:check] (branches=1) + -> [139: launch_editor] [B:check] (branches=3) + -> [140: compute_file_stats] [B:check] (branches=6) + -> [141: render_discussion_entry_read_mode] [B:check] (branches=18) + -> [142: search_files] [B:check] (branches=1) + -> [143: P3_pass] [B:check] (branches=10) + -> [144: ts_c_get_signature_result] [B:check] (branches=5) + -> [145: render_organization_deductions] [B:check] (branches=19) + -> [146: py_get_var_declaration_result] [B:check] (branches=8) + -> [147: delete_bias_profile] [B:check] (branches=2) + -> [148: _pre_dispatch] [B:check] (branches=8) + -> [149: read_file_result] [B:check] (branches=6) + -> [150: from_dict] [B:check] (branches=0) + -> [151: render_path_field] [B:check] (branches=5) + -> [152: ts_cpp_get_signature_result] [B:check] (branches=5) + -> [153: derive_code_path] [B:check] (branches=1) + -> [154: from_dict] [B:check] (branches=0) + -> [155: run_powershell] [B:check] (branches=21) + -> [156: _on_ai_stream] [B:is None?] (branches=5) [N:safe] + -> [157: aggregate_findings] [B:check] (branches=9) + -> [158: _send_minimax] [B:check] (branches=11) + -> [159: build_summary_markdown] [B:check] (branches=2) + -> [160: _normalize_bullet_delimiters] [B:check] (branches=0) + -> [161: _api_post_gui] [B:check] (branches=0) + -> [162: delete_preset] [B:check] (branches=3) + -> [163: _handle_hide_patch_modal] [B:check] (branches=0) + -> [164: ui_file_paths] [B:check] (branches=0) + -> [165: _api_confirm_action] [B:is None?] (branches=4) [N:safe] + -> [166: py_get_symbol_info] [B:check] (branches=1) + -> [167: analyze_consumer_pattern] [B:check] (branches=3) + -> [168: _cb_load_track_result] [B:check] (branches=6) + -> [169: py_get_hierarchy] [B:check] (branches=1) + -> [170: from_dict] [B:check] (branches=0) + -> [171: delete_preset] [B:check] (branches=2) + -> [172: _warmup_one] [B:is None?] (branches=7) [N:safe] + -> [173: truncate_entries] [B:check] (branches=4) + -> [174: mutate_mma_dag] [B:check] (branches=1) + -> [175: get_tool_spec] [B:check] (branches=1) + -> [176: build_discussion_text] [B:check] (branches=1) + -> [177: save_preset] [B:check] (branches=3) + -> [178: py_set_signature_result] [B:check] (branches=7) + -> [179: post_gui] [B:check] (branches=1) + -> [180: flat_config] [B:check] (branches=2) + -> [181: get_history] [B:check] (branches=3) + -> [182: menu] [B:check] (branches=0) + -> [183: _send_qwen] [B:check] (branches=9) + -> [184: render_palette_modal] [B:check] (branches=22) + -> [185: __init__] [B:check] (branches=0) + -> [186: create_slice] [B:check] (branches=0) + -> [187: _get_path] [B:check] (branches=3) + -> [188: get_symbol_definition] [B:check] (branches=2) + -> [189: _render_code_block] [B:is None?] (branches=11) [N:safe] + -> [190: get_node_status] [B:check] (branches=1) + -> [191: update_bead] [B:check] (branches=2) + -> [192: index_file] [B:check] (branches=13) + -> [193: py_set_var_declaration] [B:check] (branches=1) + -> [194: _create_discussion] [B:check] (branches=2) + -> [195: _simulate_save_preset] [B:check] (branches=0) + -> [196: delete_session] [B:check] (branches=0) + -> [197: build_markdown] [B:check] (branches=0) + -> [198: confirm_execution] [B:is None?] (branches=3) [N:safe] + -> [199: _handle_mma_step_approval] [B:check] (branches=6) + -> [200: tree_node_ex] [B:check] (branches=0) + -> [201: py_check_syntax_result] [B:check] (branches=7) + -> [202: load_frequency_overrides] [B:check] (branches=4) + -> [203: push] [B:check] (branches=1) + -> [204: mma_status] [B:check] (branches=0) + -> [205: _cb_save_workspace_profile] [B:check] (branches=2) + -> [206: _safe_controller_result] [B:is None?] (branches=4) [N:safe] + -> [207: get_token_stats] [B:check] (branches=3) + -> [208: _on_warmup_complete_callback] [B:is None?] (branches=5) [N:safe] + -> [209: delete_documents] [B:check] (branches=2) + -> [210: _trim_anthropic_history] [B:check] (branches=13) + -> [211: _compute_score] [B:check] (branches=3) + -> [212: ts_c_get_skeleton] [B:check] (branches=1) + -> [213: topological_sort] [B:check] (branches=3) + -> [214: save_persona] [B:check] (branches=1) + -> [215: _spawn_worker] [B:check] (branches=3) + -> [216: render_code] [B:check] (branches=0) + -> [217: _extract_tool_name] [B:check] (branches=13) + -> [218: __init__] [B:is None?] (branches=0) [N:safe] + -> [219: _make_serializable] [B:check] (branches=5) + -> [220: worker_comms_callback] [B:check] (branches=7) + -> [221: add_field_access] [B:check] (branches=0) + -> [222: register] [B:check] (branches=2) + -> [223: branch_discussion] [B:check] (branches=3) + -> [224: summarise_file] [B:check] (branches=7) + -> [225: mark_blocked] [B:check] (branches=0) + -> [226: py_set_var_declaration_result] [B:check] (branches=8) + -> [227: __init__] [B:check] (branches=2) + -> [228: approve_ticket] [B:check] (branches=4) + -> [229: run_discussion_compression] [B:check] (branches=14) + -> [230: _is_subsequence] [B:check] (branches=3) + -> [231: __init__] [B:check] (branches=4) + -> [232: __init__] [B:is None?] (branches=0) [N:safe] + -> [233: get_tracks_dir] [B:check] (branches=0) + -> [234: get_role_tint] [B:check] (branches=0) + -> [235: _do_project_switch] [B:check] (branches=9) + -> [236: apply_patch] [B:check] (branches=1) + -> [237: parse_thinking_trace] [B:check] (branches=1) + -> [238: _handle_show_track_proposal] [B:check] (branches=0) + -> [239: load_context_preset] [B:check] (branches=3) + -> [240: _run_tier4_patch_callback_result] [B:check] (branches=6) + -> [241: detect_nil_check_pattern] [B:is None?] (branches=11) [N:safe] + -> [242: py_get_imports_result] [B:check] (branches=13) + -> [243: render_unindented] [B:check] (branches=0) + -> [244: _set_tool_preset_result] [B:check] (branches=7) + -> [245: _handle_set_value] [B:check] (branches=6) + -> [246: count_branches_in_function] [B:is None?] (branches=9) [N:safe] + -> [247: save_bias_profile] [B:check] (branches=1) + -> [248: parse_symbols] [B:check] (branches=0) + -> [249: select_tab] [B:check] (branches=0) + -> [250: _run_tier4_analysis_result] [B:check] (branches=5) + -> [251: confirm_spawn] [B:is None?] (branches=6) [N:safe] + -> [252: child] [B:check] (branches=0) + -> [253: from_dict] [B:check] (branches=0) + -> [254: resolve_paths] [B:check] (branches=4) + -> [255: inject_context] [B:check] (branches=3) + -> [256: ts_c_get_code_outline] [B:check] (branches=1) + -> [257: py_get_definition] [B:check] (branches=1) + -> [258: set_file_slice] [B:check] (branches=1) + -> [259: get] [B:check] (branches=0) + -> [260: search_files_result] [B:check] (branches=9) + -> [261: _extract_minimax_reasoning] [B:check] (branches=5) + -> [262: py_update_definition] [B:check] (branches=1) + -> [263: find_in_scope] [B:check] (branches=10) + -> [264: _atom] [B:check] (branches=1) + -> [265: register] [B:check] (branches=0) + -> [266: handle_data] [B:check] (branches=2) + -> [267: set_brightness] [B:check] (branches=0) + -> [268: from_dict] [B:check] (branches=0) + -> [269: __init__] [B:check] (branches=0) + -> [270: _cb_start_track] [B:check] (branches=13) + -> [271: _resolve_filepath] [B:check] (branches=1) + -> [272: _save_file] [B:check] (branches=1) + -> [273: _append_tool_log] [B:check] (branches=6) + -> [274: ts_cpp_get_code_outline_result] [B:check] (branches=5) + -> [275: get_line_color] [B:check] (branches=3) + -> [276: _cb_delete_persona] [B:check] (branches=0) + -> [277: save_preset] [B:check] (branches=1) + -> [278: _dashscope_call] [B:check] (branches=5) + -> [279: _test_callback_func_write_to_file] [B:check] (branches=1) + -> [280: create_temp_modified_file] [B:check] (branches=1) + -> [281: __getattr__] [B:check] (branches=0) + -> [282: emit] [B:check] (branches=2) + -> [283: __init__] [B:check] (branches=2) + -> [284: _get_symbol_node] [B:check] (branches=12) + -> [285: get_file_hash] [B:check] (branches=0) + -> [286: _apply_preset] [B:check] (branches=4) + -> [287: _resolve_log_ref] [B:is None?] (branches=6) [N:safe] + -> [288: _send_streaming] [B:is None?] (branches=19) [N:safe] + -> [289: _create_gemini_cache_result] [B:check] (branches=3) + -> [290: _list_models_for_provider_result] [B:check] (branches=2) + -> [291: _cb_ticket_retry] [B:check] (branches=2) + -> [292: load_track_state] [B:check] (branches=4) + -> [293: walk] [B:check] (branches=23) + -> [294: _count_gaps] [B:check] (branches=5) + -> [295: web_search_result] [B:check] (branches=5) + -> [296: build_tier3_context] [B:check] (branches=50) + -> [297: py_get_code_outline] [B:check] (branches=1) + -> [298: _handle_custom_callback] [B:check] (branches=4) + -> [299: _repair_minimax_history] [B:check] (branches=10) + -> [300: send] [B:check] (branches=30) + -> [301: get_color] [B:check] (branches=7) + -> [302: parse_diff] [B:is None?] (branches=20) [N:safe] + -> [303: __getitem__] [B:is None?] (branches=4) [N:safe] + -> [304: kill_worker] [B:check] (branches=1) + -> [305: py_get_signature] [B:check] (branches=1) + -> [306: build_pcg] [B:check] (branches=12) + -> [307: _handle_set_mma_status] [B:check] (branches=0) + -> [308: _parse_float_result] [B:check] (branches=2) + -> [309: py_get_docstring] [B:check] (branches=1) + -> [310: kill_mma_worker] [B:check] (branches=1) + -> [311: _classify_anthropic_error] [B:check] (branches=15) + -> [312: resolve_pending_action] [B:check] (branches=6) + -> [313: build_diff_command] [B:check] (branches=0) + -> [314: __init__] [B:check] (branches=2) + -> [315: _record_startup_timeline_error] [B:check] (branches=1) + -> [316: add_documents] [B:check] (branches=2) + -> [317: jump_to_undo] [B:check] (branches=3) + -> [318: derive_code_path_result] [B:check] (branches=34) + -> [319: _on_api_event] [B:check] (branches=2) + -> [320: default_project] [B:check] (branches=0) + -> [321: get_file_slice_result] [B:check] (branches=5) + -> [322: _get_file_mtime_result] [B:check] (branches=2) + -> [323: _api_delete_session] [B:check] (branches=2) + -> [324: render_ssdl_rollup] [B:check] (branches=5) + -> [325: reset_tone_mapping] [B:check] (branches=2) + -> [326: _should_cache_gemini_result] [B:is None?] (branches=5) [N:safe] + -> [327: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [328: _is_contiguous] [B:check] (branches=0) + -> [329: _record_success] [B:is None?] (branches=14) [N:safe] + -> [330: _set_app_attr] [B:check] (branches=2) + -> [331: _handle_clear_ask] [B:check] (branches=1) + -> [332: rag_mcp_server] [B:check] (branches=1) + -> [333: set_base_system_prompt] [B:check] (branches=0) + -> [334: _set_minimax_provider_result] [B:check] (branches=2) + -> [335: drag] [B:check] (branches=0) + -> [336: _fetch_models] [B:check] (branches=11) + -> [337: _count_gemini_tokens_for_stats_result] [B:is None?] (branches=4) [N:safe] + -> [338: _cb_kill_ticket] [B:check] (branches=3) + -> [339: _count_tokens] [B:check] (branches=0) + -> [340: _log_stderr] [B:check] (branches=2) + -> [341: _ticket_id_max_int_result] [B:check] (branches=2) + -> [342: run_with_tool_loop] [B:is None?] (branches=23) [N:safe] + -> [343: get_text_value] [B:is None?] (branches=0) [N:safe] + -> [344: set_project_context_marker] [B:check] (branches=0) + -> [345: from_dict] [B:is None?] (branches=2) [N:safe] + -> [346: get_targeted_view] [B:check] (branches=56) + -> [347: render] [B:check] (branches=0) + -> [348: _split_row] [B:check] (branches=2) + -> [349: _all_function_refs] [B:check] (branches=2) + -> [350: update] [B:check] (branches=0) + -> [351: _get_app_attr] [B:check] (branches=3) + -> [352: delete_preset] [B:check] (branches=2) + -> [353: build_markdown_no_history] [B:check] (branches=0) + -> [354: edit_file_result] [B:check] (branches=10) + -> [355: current_model] [B:check] (branches=0) + -> [356: confirm_action] [B:check] (branches=0) + -> [357: _write_beads] [B:check] (branches=0) + -> [358: outline] [B:check] (branches=26) + -> [359: _summarise_markdown] [B:check] (branches=3) + -> [360: _test_callback_func_write_to_file] [B:check] (branches=1) + -> [361: parse_hunk_header] [B:check] (branches=2) + -> [362: _cb_ticket_skip] [B:check] (branches=2) + -> [363: get_skeleton] [B:check] (branches=27) + -> [364: _ast_get_definition] [B:check] (branches=0) + -> [365: _api_get_key] [B:check] (branches=3) + -> [366: delete_documents_by_path] [B:check] (branches=3) + -> [367: _repair_anthropic_history] [B:check] (branches=6) + -> [368: list_models_for_vendor] [B:check] (branches=1) + -> [369: resolve_slice] [B:check] (branches=18) + -> [370: render] [B:check] (branches=0) + -> [371: _handle_drag] [B:check] (branches=1) + -> [372: search] [B:check] (branches=8) + -> [373: _on_open_link] [B:check] (branches=5) + -> [374: estimate_cost] [B:check] (branches=3) + -> [375: py_get_code_outline_result] [B:check] (branches=6) + -> [376: from_dict] [B:check] (branches=0) + -> [377: scope] [B:check] (branches=0) + -> [378: _rag_search_result] [B:check] (branches=5) + -> [379: __getattr__] [B:check] (branches=2) + -> [380: log_comms] [B:is None?] (branches=3) [N:safe] + -> [381: compute_effective_codepaths] [B:check] (branches=2) + -> [382: dominant_pattern] [B:check] (branches=2) + -> [383: get_track_state_dir] [B:check] (branches=0) + -> [384: configure] [B:is None?] (branches=7) [N:safe] + -> [385: apply_syntax_palette] [B:is None?] (branches=2) [N:safe] + -> [386: phase] [B:check] (branches=3) + -> [387: _deserialize_active_track_result] [B:check] (branches=3) + -> [388: __init__] [B:check] (branches=0) + -> [389: _chunk_text] [B:check] (branches=3) + -> [390: deep_search] [B:check] (branches=7) + -> [391: rag_source] [B:check] (branches=0) + -> [392: parse_tables] [B:check] (branches=7) + -> [393: _load_fonts_main_result] [B:check] (branches=3) + -> [394: right_click] [B:check] (branches=0) + -> [395: build_discussion_section] [B:check] (branches=2) + -> [396: _on_warmup_complete_callback_result] [B:check] (branches=6) + -> [397: start_services] [B:check] (branches=0) + -> [398: spawn_mma_worker] [B:check] (branches=1) + -> [399: P2_pass] [B:is None?] (branches=6) [N:safe] + -> [400: window] [B:check] (branches=0) + -> [401: web_search] [B:check] (branches=1) + -> [402: get] [B:check] (branches=2) + -> [403: detect_frequency_from_entry_point] [B:check] (branches=6) + -> [404: _toggle_attr] [B:check] (branches=2) + -> [405: handle_starttag] [B:check] (branches=6) + -> [406: render_thinking_trace] [B:check] (branches=12) + -> [407: __init__] [B:check] (branches=0) + -> [408: click] [B:check] (branches=0) + -> [409: generate_tickets] [B:check] (branches=12) + -> [410: __getattr__] [B:check] (branches=0) + -> [411: _handle_select_list_item] [B:check] (branches=2) + -> [412: from_dict] [B:check] (branches=4) + -> [413: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [414: reset_session] [B:check] (branches=0) + -> [415: _save_file] [B:check] (branches=1) + -> [416: render_ssdl_sketch] [B:check] (branches=4) + -> [417: get_curated_view] [B:check] (branches=24) + -> [418: _write_raw] [B:check] (branches=1) + -> [419: deep_search] [B:check] (branches=7) + -> [420: _has_app_attr] [B:check] (branches=3) + -> [421: build_screenshots_section] [B:check] (branches=6) + -> [422: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [423: id] [B:check] (branches=0) + -> [424: _normalize_list_continuations] [B:check] (branches=9) + -> [425: __init__] [B:check] (branches=0) + -> [426: _cb_apply_view_preset] [B:check] (branches=1) + -> [427: redo] [B:check] (branches=1) + -> [428: compute_result_coverage] [B:check] (branches=2) + -> [429: __init__] [B:check] (branches=1) + -> [430: _make_request] [B:check] (branches=8) + -> [431: _handle_refresh_from_project] [B:check] (branches=0) + -> [432: _set_context_files] [B:check] (branches=0) + -> [433: apply] [B:check] (branches=10) + -> [434: _handle_ask] [B:check] (branches=0) + -> [435: set_session_start_time] [B:check] (branches=2) + -> [436: _resolve_aliases] [B:is None?] (branches=7) [N:safe] + -> [437: _content_block_to_dict] [B:check] (branches=5) + -> [438: entry_to_str] [B:check] (branches=3) + -> [439: _is_table_at] [B:check] (branches=2) + -> [440: _list_gemini_models_result] [B:check] (branches=7) + -> [441: run_audit] [B:check] (branches=4) + -> [442: render_text_viewer] [B:check] (branches=3) + -> [443: get_tree_result] [B:check] (branches=13) + -> [444: render_code] [B:check] (branches=0) + -> [445: ts_cpp_get_definition_result] [B:check] (branches=5) + -> [446: get_cached_tree] [B:check] (branches=4) + -> [447: async_dispatch] [B:check] (branches=2) + -> [448: _cb_delete_bias_profile] [B:check] (branches=0) + -> [449: py_get_class_summary_result] [B:check] (branches=10) + -> [450: P1_pass] [B:is None?] (branches=5) [N:safe] + -> [451: log_api_hook] [B:is None?] (branches=3) [N:safe] + -> [452: aggregate_pattern_from_consumers] [B:check] (branches=7) + -> [453: with_scope] [B:check] (branches=0) + -> [454: from_dict] [B:check] (branches=0) + -> [455: get_file_summary] [B:check] (branches=1) + -> [456: tab_item] [B:check] (branches=0) + -> [457: _classify_openai_compatible_error] [B:check] (branches=10) + -> [458: from_dict] [B:check] (branches=0) + -> [459: _on_tool_log] [B:check] (branches=1) + -> [460: get_persona_scope] [B:check] (branches=3) + -> [461: update_definition] [B:check] (branches=42) + -> [462: _cb_load_workspace_profile] [B:check] (branches=3) + -> [463: to_dsl_v2] [B:is None?] (branches=10) [N:safe] + -> [464: wait_for_event] [B:check] (branches=4) + -> [465: _summarise_python] [B:check] (branches=21) + -> [466: compute_decomposition_cost] [B:check] (branches=0) + -> [467: __getattr__] [B:check] (branches=4) + -> [468: py_get_skeleton_result] [B:check] (branches=5) + -> [469: handle_data] [B:check] (branches=2) + -> [470: get_definition] [B:check] (branches=42) + -> [471: __init__] [B:check] (branches=2) + -> [472: _ast_get_signature] [B:check] (branches=0) + -> [473: _get_mtime_safe] [B:is None?] (branches=3) [N:safe] + -> [474: analyze_producer_size] [B:is None?] (branches=21) [N:safe] + -> [475: table] [B:check] (branches=0) + -> [476: get_tree] [B:check] (branches=1) + -> [477: code_path_audit_v2] [B:check] (branches=1) + -> [478: _aggregate_for_fqname] [B:check] (branches=4) + -> [479: clean_nones] [B:is None?] (branches=2) [N:safe] + -> [480: py_set_signature] [B:check] (branches=1) + -> [481: set_custom_system_prompt] [B:check] (branches=0) + -> [482: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [483: __setattr__] [B:check] (branches=3) + -> [484: _clean_nones] [B:is None?] (branches=2) [N:safe] + -> [485: detect_language] [B:check] (branches=8) + -> [486: fetch_url] [B:check] (branches=1) + -> [487: handle_endtag] [B:check] (branches=5) + -> [488: _add_to_history] [B:check] (branches=3) + -> [489: promote_take] [B:check] (branches=4) + -> [490: save_track_state] [B:check] (branches=1) + -> [491: _init_ai_and_hooks] [B:check] (branches=2) + -> [492: py_get_docstring_result] [B:check] (branches=10) + -> [493: get_outline] [B:check] (branches=1) + -> [494: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [495: parse_history_entries] [B:check] (branches=10) + -> [496: from_dict] [B:check] (branches=0) + -> [497: str_to_entry] [B:check] (branches=5) + -> [498: set_file_slice_result] [B:check] (branches=7) + -> [499: request_confirmation] [B:check] (branches=0) + -> [500: compute_real_decomposition_cost] [B:check] (branches=7) + -> [501: _classify_deepseek_error] [B:is None?] (branches=21) [N:safe] + -> [502: _report_worker_error] [B:check] (branches=2) + -> [503: get_conductor_dir] [B:check] (branches=2) + -> [504: put] [B:check] (branches=3) + -> [505: capture_state] [B:check] (branches=0) + -> [506: __init__] [B:check] (branches=0) + -> [507: render_discussion_entry] [B:check] (branches=21) + -> [508: from_dict] [B:check] (branches=0) + -> [509: parse_dsl_v2] [B:check] (branches=17) + -> [510: _handle_ticket_completed] [B:check] (branches=3) + -> [511: _cb_create_track] [B:check] (branches=4) + -> [512: py_check_syntax] [B:check] (branches=1) + -> [513: edit_file] [B:check] (branches=1) + -> [514: _confirm_and_run] [B:check] (branches=12) + -> [515: parse_ts] [B:check] (branches=2) + -> [516: _log_phase_output] [B:check] (branches=2) + -> [517: _set_mcp_config_json_result] [B:check] (branches=2) + -> [518: get_api_key] [B:check] (branches=0) + -> [519: _ast_get_skeleton] [B:check] (branches=0) + -> [520: estimate_struct_size] [B:check] (branches=3) + -> [521: run_all_cross_audit_reads] [B:check] (branches=4) + -> [522: popup_modal] [B:check] (branches=0) + -> [523: mcp_config_json] [B:check] (branches=0) + -> [524: _handle_set_ai_status] [B:check] (branches=0) + -> [525: _handle_mma_stream] [B:check] (branches=4) + -> [526: _ast_get_code_outline] [B:check] (branches=0) + -> [527: get_capabilities] [B:check] (branches=2) + -> [528: set_value] [B:check] (branches=0) + -> [529: kill_worker] [B:check] (branches=4) + -> [530: inject_context] [B:check] (branches=1) + -> [531: node] [B:check] (branches=0) + -> [532: ollama_chat] [B:check] (branches=3) + -> [533: post_api_session] [B:check] (branches=0) + -> [534: dispatch] [B:check] (branches=60) + -> [535: log_tool_output] [B:is None?] (branches=4) [N:safe] + -> [536: _cb_save_bias_profile] [B:check] (branches=0) + -> [537: set_provider] [B:check] (branches=7) + -> [538: add_producer] [B:check] (branches=0) + -> [539: _on_performance_alert] [B:check] (branches=0) + -> [540: get_code_outline] [B:is None?] (branches=8) [N:safe] + -> [541: parse] [B:check] (branches=0) + -> [542: _render_ast_inspector_outline_result] [B:check] (branches=6) + -> [543: __init__] [B:check] (branches=0) + -> [544: _read_file_content_result] [B:check] (branches=3) + -> [545: _start_track_logic_result] [B:check] (branches=10) + -> [546: from_dict] [B:check] (branches=0) + -> [547: __init__] [B:check] (branches=0) + -> [548: reload] [B:check] (branches=4) + -> [549: get_git_diff] [B:check] (branches=1) + -> [550: migrate_from_legacy_config] [B:check] (branches=2) + -> [551: __init__] [B:check] (branches=0) + -> [552: get_summary] [B:check] (branches=2) + -> [553: send] [B:check] (branches=19) + -> [554: get_signature] [B:check] (branches=46) + -> [555: push_event] [B:check] (branches=0) + -> [556: ts_cpp_get_code_outline] [B:check] (branches=1) + -> [557: ts_c_update_definition] [B:check] (branches=1) + -> [558: _handle_refresh_api_metrics] [B:check] (branches=1) + -> [559: _push_state] [B:check] (branches=1) + -> [560: _truncate_tool_output] [B:check] (branches=2) + -> [561: render_tier_stream_panel] [B:is None?] (branches=16) [N:safe] + -> [562: _build_tree] [B:check] (branches=8) + -> [563: get_indicator_state] [B:check] (branches=0) + -> [564: _get_path] [B:check] (branches=3) + -> [565: _on_warmup_complete_for_timeline] [B:check] (branches=0) + -> [566: get_git_commit] [B:check] (branches=2) + -> [567: py_get_signature_result] [B:check] (branches=10) + -> [568: format_discussion] [B:check] (branches=0) + -> [569: set_vendor_quota] [B:check] (branches=0) + -> [570: py_get_skeleton] [B:check] (branches=1) + -> [571: on] [B:check] (branches=1) + -> [572: py_get_var_declaration] [B:check] (branches=1) + -> [573: _switch_project] [B:check] (branches=7) + -> [574: extract_colon_blocks] [B:check] (branches=1) + -> [575: start_component] [B:check] (branches=2) + -> [576: from_dict] [B:check] (branches=0) + -> [577: py_find_usages_result] [B:check] (branches=19) + -> [578: _load_project_from_path_result] [B:check] (branches=2) + -> [579: build_dashscope_tools] [B:check] (branches=2) + -> [580: _execute_tool_calls_concurrently] [B:check] (branches=10) + -> [581: from_dict] [B:check] (branches=0) + -> [582: _save_context_preset_force] [B:check] (branches=2) + -> [583: _repair_deepseek_history] [B:check] (branches=6) + -> [584: _execute] [B:check] (branches=3) + -> [585: mark_manual_block] [B:check] (branches=0) + -> [586: _set_external_editor_default] [B:check] (branches=2) + -> [587: delete_persona] [B:check] (branches=2) + -> [588: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [589: wait_for_project_switch] [B:is None?] (branches=8) [N:safe] + -> [590: parse_json_tickets] [B:check] (branches=5) + -> [591: render_post_fx] [B:check] (branches=0) + -> [592: update_task_status] [B:check] (branches=1) + -> [593: _on_sigint] [B:check] (branches=1) + -> [594: set_tool_preset] [B:check] (branches=2) + -> [595: _send_blocking] [B:check] (branches=4) + -> [596: find_next_increment] [B:check] (branches=3) + -> [597: render_heavy_text] [B:check] (branches=8) + -> [598: __init__] [B:check] (branches=2) + -> [599: clutch_callback] [B:check] (branches=5) + -> [600: __init__] [B:check] (branches=0) + -> [601: restore_state] [B:check] (branches=1) + -> [602: get_value] [B:check] (branches=10) + -> [603: _summarise_toml] [B:check] (branches=8) + -> [604: _start_track_logic] [B:check] (branches=1) + -> [605: _switch_discussion] [B:check] (branches=4) + -> [606: _send_request] [B:check] (branches=2) + -> [607: __init__] [B:check] (branches=2) + -> [608: _handle_right_click] [B:check] (branches=1) + -> [609: _handle_show_patch_modal] [B:check] (branches=0) + -> [610: _offload_entry_payload] [B:check] (branches=10) + -> [611: load_themes_from_toml] [B:check] (branches=10) + -> [612: _cb_delete_view_preset] [B:check] (branches=0) + -> [613: _invalidate_token_estimate] [B:check] (branches=0) + -> [614: get_session] [B:check] (branches=0) + -> [615: _send_grok] [B:check] (branches=14) + -> [616: get_git_diff_result] [B:check] (branches=6) + -> [617: log_message] [B:check] (branches=0) + -> [618: save_to_config] [B:check] (branches=1) + -> [619: _fire_callback] [B:check] (branches=3) + -> [620: _get_avg] [B:check] (branches=3) + -> [621: ts_cpp_update_definition_result] [B:check] (branches=6) + -> [622: rag_mcp_tool] [B:check] (branches=1) + -> [623: ts_c_get_skeleton_result] [B:check] (branches=5) + -> [624: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [625: _cb_delete_workspace_profile] [B:check] (branches=2) + -> [626: _cb_block_ticket] [B:check] (branches=7) + -> [627: _resolve_and_check_result] [B:check] (branches=5) + -> [628: ts_c_get_definition] [B:check] (branches=1) + -> [629: load_memory_dim_overrides] [B:check] (branches=4) + -> [630: _render_window_if_open] [B:check] (branches=4) + -> [631: _parse_tool_args_result] [B:check] (branches=2) + -> [632: ts_c_get_signature] [B:check] (branches=1) + -> [633: end_component] [B:is None?] (branches=8) [N:safe] + -> [634: _has_app_attr] [B:check] (branches=3) + -> [635: _is_likely_lang_tag] [B:check] (branches=1) + -> [636: _send_deepseek] [B:check] (branches=71) + -> [637: __init__] [B:check] (branches=2) + -> [638: _to_typed_tool_call] [B:check] (branches=3) + -> [639: add_consumer] [B:check] (branches=0) + -> [640: run_subagent_summarization] [B:check] (branches=11) + -> [641: reload_all] [B:check] (branches=2) + -> [642: _set_app_attr] [B:check] (branches=2) + -> [643: py_get_definition_result] [B:check] (branches=5) + -> [644: _populate_auto_slices_outline_result] [B:check] (branches=5) + -> [645: _list_minimax_models_result] [B:check] (branches=4) + -> [646: list_directory] [B:check] (branches=1) + -> [647: run_worker_lifecycle] [B:check] (branches=60) + -> [648: ts_cpp_get_skeleton_result] [B:check] (branches=5) + -> [649: from_dict] [B:check] (branches=0) + -> [650: __exit__] [B:check] (branches=0) + -> [651: _get_tm] [B:check] (branches=0) + -> [652: format_takes_diff] [B:check] (branches=10) + -> [653: send_openai_compatible] [B:is None?] (branches=5) [N:safe] + -> [654: _try_warm_sdk_result] [B:check] (branches=2) + -> [655: _set_bias_profile_result] [B:check] (branches=5) + -> [656: _tone_map] [B:check] (branches=0) + -> [657: _get_language_id] [B:check] (branches=7) + -> [658: get_context] [B:check] (branches=3) + -> [659: render_selectable_label] [B:check] (branches=6) + -> [660: from_dict] [B:check] (branches=0) + -> [661: _handle_mma_respond] [B:is None?] (branches=9) [N:safe] + -> [662: _trim_minimax_history] [B:check] (branches=8) + -> [663: __init__] [B:check] (branches=2) + -> [664: handle_endtag] [B:check] (branches=5) + -> [665: request_patch_approval] [B:check] (branches=0) + -> [666: _field_names_for_aggregate] [B:check] (branches=1) + -> [667: _analyze_function_field_accesses] [B:check] (branches=17) + -> [668: _summarise_generic] [B:check] (branches=10) + -> [669: generate_rationale] [B:check] (branches=0) + -> [670: summarise_items] [B:is None?] (branches=3) [N:safe] + -> [671: deep_search] [B:check] (branches=7) + -> [672: get_history] [B:check] (branches=1) + -> [673: log_cli_call] [B:is None?] (branches=3) [N:safe] + -> [674: update_session_metadata] [B:check] (branches=1) + -> [675: _api_post_api_session] [B:check] (branches=1) + -> [676: suggest_defusing_technique] [B:check] (branches=4) + -> [677: count_tokens] [B:check] (branches=0) + -> [678: _cb_unblock_ticket] [B:check] (branches=10) + -> [679: load_themes_from_dir] [B:check] (branches=6) + -> [680: get_editor] [B:check] (branches=1) + -> [681: _send_llama] [B:check] (branches=13) + -> [682: _classify_gemini_error] [B:check] (branches=21) + -> [683: _execute_gui_task_result] [B:check] (branches=6) + -> [684: request_patch_from_tier4_result] [B:check] (branches=6) + -> [685: popup] [B:check] (branches=0) + -> [686: spawn] [B:check] (branches=6) + -> [687: _handle_ticket_started] [B:check] (branches=8) + -> [688: load_track_history] [B:check] (branches=3) + -> [689: _get_gemini_history_list] [B:check] (branches=4) + -> [690: _starts_at_word_boundary] [B:check] (branches=4) + -> [691: py_find_usages] [B:check] (branches=1) + -> [692: run] [B:is None?] (branches=31) [N:safe] + -> [693: ts_c_update_definition_result] [B:check] (branches=6) + -> [694: load_theme_file] [B:check] (branches=5) + -> [695: post_gui] [B:check] (branches=0) + -> [696: register_session] [B:check] (branches=2) + -> [697: run] [B:check] (branches=1) + -> [698: load_context_preset] [B:check] (branches=1) + -> [699: py_get_class_summary] [B:check] (branches=1) + -> [700: _save_config_to_disk] [B:check] (branches=1) + -> [701: post_session] [B:check] (branches=1) + -> [702: __init__] [B:check] (branches=0) + -> [703: _cb_load_track] [B:check] (branches=2) + -> [704: _log_canary] [B:is None?] (branches=7) [N:safe] + -> [705: _cb_save_persona] [B:check] (branches=0) + -> [706: _parse_token_history_first_ts_result] [B:check] (branches=40) + -> [707: _file_to_aggregates] [B:check] (branches=4) + -> [708: current_provider] [B:check] (branches=0) + -> [709: approve_task] [B:check] (branches=3) + -> [710: _serialize_for_api] [B:check] (branches=4) + -> [711: from_dict] [B:check] (branches=0) + -> [712: build_markdown_from_items] [B:check] (branches=9) + -> [713: build_cross_audit_findings_for_aggregate] [B:check] (branches=7) + -> [714: _search_mcp] [B:check] (branches=1) + -> [715: from_dict] [B:check] (branches=0) + -> [716: call_tool] [B:check] (branches=2) + -> [717: get_syntax_palette_for_theme] [B:check] (branches=1) + -> [718: ts_c_get_definition_result] [B:check] (branches=5) + -> [719: rag_collection_name] [B:check] (branches=0) + -> [720: extract_tags] [B:check] (branches=0) + -> [721: trigger_patch] [B:check] (branches=1) + -> [722: _handle_set_comms_dirty] [B:check] (branches=0) + -> [723: stream_callback] [B:check] (branches=1) + -> [724: post_project] [B:check] (branches=0) + -> [725: _get_path] [B:check] (branches=3) + -> [726: _capture_workspace_profile] [B:check] (branches=3) + -> [727: cb_load_prior_log] [B:is None?] (branches=2) [N:safe] + -> [728: request_patch_from_tier4] [B:check] (branches=2) + -> [729: from_dict] [B:check] (branches=0) + -> [730: ai_status] [B:check] (branches=0) + -> [731: _cb_new_project_automated] [B:check] (branches=2) + -> [732: ts_cpp_get_skeleton] [B:check] (branches=1) + -> [733: _chunk_text] [B:check] (branches=0) + -> [734: _handle_mma_spawn_approval] [B:check] (branches=8) + -> [735: _handle_bead_updated] [B:check] (branches=4) + -> [736: save_preset] [B:check] (branches=1) + -> [737: save_profile] [B:check] (branches=1) + -> [738: extract_real_optimization_candidates] [B:check] (branches=4) + -> [739: __init__] [B:check] (branches=2) + -> [740: get_file_summary_result] [B:check] (branches=6) + -> [741: ts_cpp_get_definition] [B:check] (branches=1) + -> [742: _run_tier4_patch_generation_result] [B:check] (branches=5) + -> [743: analyze_consumer_fields] [B:check] (branches=10) + -> [744: apply_patch_to_file] [B:check] (branches=14) + -> [745: __getattr__] [B:check] (branches=0) + -> [746: _queue_put] [B:is None?] (branches=1) [N:safe] + -> [747: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [748: _resolve_path] [B:check] (branches=6) + -> [749: select_list_item] [B:check] (branches=0) + -> [750: get] [B:check] (branches=0) + -> [751: find_enclosing_function] [B:check] (branches=2) + -> [752: _handle_ai_response] [B:check] (branches=12) -> [T:done] ``` -**Effective codepaths:** 40140116231395706750390 (sum of 2^branches across 66 consumers) -**Total branch points:** 541 -**Nil-check functions:** 9 +**Effective codepaths:** 40142494212284116997693 (sum of 2^branches across 752 consumers) +**Total branch points:** 3466 +**Nil-check functions:** 74 **Defusing opportunities:** - **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. - - Effective codepaths: 40140116231395706750390 -> 40140116231395706750372 -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `metadata_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 173 field-check branches to 1 cache lookup. - - Effective codepaths: 40140116231395706750390 -> 173 + - Effective codepaths: 40142494212284116997693 -> 40142494212284116997545 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `metadata_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 123 field-check branches to 1 cache lookup. + - Effective codepaths: 40142494212284116997693 -> 123 - **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. - - Effective codepaths: 40140116231395706750390 -> 66 + - Effective codepaths: 40142494212284116997693 -> 752 ## Frequency @@ -417,100 +2466,98 @@ _... 35 more fields_ ## Result coverage -**Summary:** 96 producers, 46 consumers +**Summary:** 457 producers, 697 consumers | metric | value | |---|---| -| total producers | 96 | -| result producers | 96 | -| total consumers | 46 | +| total producers | 457 | +| result producers | 457 | +| total consumers | 697 | | result consumers | 0 | ## Type alias coverage -**Summary:** 173 sites; 0 typed (0%); 173 untyped (100%) +**Summary:** 123 sites; 0 typed (0%); 123 untyped (100%) | metric | value | |---|---| -| total field-access sites | 173 | +| total field-access sites | 123 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 173 | +| untyped sites (wildcard) | 123 | ## Cross-audit findings | bucket | audit script | site count | example file | example line | note | |---|---|---|---|---|---| -| optional_in_baseline | `audit_optional_in_3_files` | 76 | `src\ai_client.py` | 159 | 76 sites | +| optional_in_baseline | `audit_optional_in_3_files` | 79 | `src\mcp_client.py` | 1285 | 79 sites | ## Decomposition cost -**Current cost estimate:** 720 us/turn +**Current cost estimate:** 520 us/turn **Componentize savings:** 0 us/turn **Unify savings:** 0 us/turn **Recommended direction:** hold -**Rationale:** Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. -**Struct field count (estimated):** 10 +**Rationale:** Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=6, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +**Struct field count (estimated):** 6 **Struct frozen:** True ## Struct shape (inferred from producer returns) | field | access count | access pattern | |---|---|---| -| `content` | 21 | hot | -| `marker` | 21 | hot | -| `get` | 10 | hot | -| `append` | 3 | hot | -| `pop` | 3 | hot | -| `session_usage` | 2 | used | +| `content` | 3 | hot | +| `marker` | 3 | hot | +| `get` | 3 | hot | | `files` | 2 | used | -| `ai_status` | 2 | used | -| `config` | 2 | used | -| `latency` | 1 | used | -| `_recalculate_session_usage` | 1 | used | -| `_token_stats` | 1 | used | -| `_gemini_cache_text` | 1 | used | -| `vendor_quota` | 1 | used | -| `last_error` | 1 | used | -| `error` | 1 | used | -| `_update_cached_stats` | 1 | used | -| `usage` | 1 | used | +| `_id` | 2 | used | +| `_flags` | 2 | used | +| `_size` | 2 | used | +| `_dirty` | 2 | used | +| `engine` | 2 | used | +| `controller` | 2 | used | +| `_make_request` | 1 | used | +| `data` | 1 | used | +| `update_session_metadata` | 1 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `_read_beads` | 1 | used | +| `_write_beads` | 1 | used | +| `lower` | 1 | used | +| `fqname` | 1 | used | +| `children` | 1 | used | +| `type` | 1 | used | +| `child_by_field_name` | 1 | used | +| `active_track` | 1 | used | +| `_mma_status` | 1 | used | +| `active_tier` | 1 | used | +| `active_tickets` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_cb_load_workspace_profile` | 1 | used | +| `app` | 1 | used | | `local_ts` | 1 | used | | `_offload_entry_payload` | 1 | used | | `ui_auto_add_history` | 1 | used | | `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | | `_pending_history_adds_lock` | 1 | used | | `_token_history` | 1 | used | | `_pending_comms` | 1 | used | | `_pending_history_adds` | 1 | used | -| `output` | 1 | used | -| `_start_track_logic_result` | 1 | used | -| `discussion` | 1 | used | -| `encode` | 1 | used | -| `search` | 1 | used | -| `context_files` | 1 | used | -| `_pending_gui_tasks_lock` | 1 | used | -| `_topological_sort_tickets_result` | 1 | used | -| `active_project_root` | 1 | used | -| `event_queue` | 1 | used | -| `engines` | 1 | used | -| `project` | 1 | used | +| `screenshots` | 1 | used | +| `_undo_stack` | 1 | used | +| `_redo_stack` | 1 | used | +| `values` | 1 | used | +| `ai_status` | 1 | used | | `active_discussion` | 1 | used | -| `submit_io` | 1 | used | -| `tracks` | 1 | used | -| `mma_tier_usage` | 1 | used | -| `_pending_gui_tasks` | 1 | used | -| `mma_step_mode` | 1 | used | -| `active_project_path` | 1 | used | -| `items` | 1 | used | -| `estimated_prompt_tokens` | 1 | used | -| `max_prompt_tokens` | 1 | used | -| `utilization_pct` | 1 | used | -| `headroom` | 1 | used | -| `would_trim` | 1 | used | -| `sys_tokens` | 1 | used | -| `tool_tokens` | 1 | used | -| `history_tokens` | 1 | used | -| `_est_tokens` | 1 | used | +| `project` | 1 | used | +| `project_root` | 1 | used | +| `_load_file` | 1 | used | +| `startswith` | 1 | used | +| `model` | 1 | used | +| `parent` | 1 | used | +| `_report_worker_error` | 1 | used | +| `rag_config` | 1 | used | +| `collection` | 1 | used | ## Optimization candidates @@ -518,7 +2565,7 @@ _(no optimization candidates generated)_ ## Verdict -Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=6, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix @@ -526,79 +2573,63 @@ Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10 | function | pattern | field_accesses | confidence | |---|---|---|---| -| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | -| `src.ai_client._send_anthropic` | `whole_struct` | | low | -| `src.app_controller._refresh_api_metrics` | `field_by_field` | `latency`=1, `_recalculate_session_usage`=1, `_token_stats`=1, `get`=2, `_gemini_cache_text`=1, `vendor_quota`=1, `last_error`=1, `error`=2, `_update_cached_stats`=1, `session_usage`=2 (+1 more) | high | | `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._add_history_cache_breakpoint` | `whole_struct` | | low | -| `src.ai_client._append_comms` | `whole_struct` | | low | +| `src.code_path_audit.aggregate_cross_audit_findings` | `whole_struct` | | low | +| `src.api_hook_client.approve_mma_ticket` | `whole_struct` | `_make_request`=1 | high | +| `src.log_registry.update_auto_whitelist_status` | `mixed` | `data`=2, `update_session_metadata`=1 | high | | `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | -| `src.ai_client._dashscope_call` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._send_grok` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.aggregate.build_tier3_context` | `whole_struct` | | low | -| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.project_manager.migrate_from_legacy_config` | `whole_struct` | `get`=2 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | -| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | -| `src.ai_client._trim_minimax_history` | `whole_struct` | `pop`=4 | high | -| `src.app_controller._start_track_logic` | `mixed` | `_start_track_logic_result`=1, `ai_status`=1 | high | -| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | | `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | | `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.project_manager.format_discussion` | `whole_struct` | | low | -| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | -| `src.ai_client._pre_dispatch` | `whole_struct` | | low | -| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | -| `src.ai_client.send` | `mixed` | `config`=1, `search`=1 | high | -| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | -| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | -| `src.ai_client._send_minimax` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client.run_tier4_analysis` | `whole_struct` | | low | +| `src.app_controller._flush_to_project_result` | `whole_struct` | | low | +| `src.code_path_audit.classify_memory_dim` | `whole_struct` | | low | +| `src.imgui_scopes.__init__` | `field_by_field` | `_id`=1, `_flags`=1, `_size`=2 | high | +| `src.beads_client.create_bead` | `mixed` | `_read_beads`=1, `_write_beads`=1 | high | +| `src.command_palette.fuzzy_match` | `whole_struct` | `lower`=1 | high | +| `src.theme_2.set_gamma` | `whole_struct` | | low | +| `src.multi_agent_conductor.update_task_status` | `mixed` | `_dirty`=1, `engine`=1 | high | +| `src.code_path_audit.estimate_call_frequency` | `whole_struct` | `fqname`=2 | high | +| `src.file_cache.walk` | `field_by_field` | `children`=3, `type`=2, `child_by_field_name`=1 | high | +| `src.code_path_audit.detect_access_pattern` | `whole_struct` | | low | +| `src.api_hooks._get_app_attr` | `whole_struct` | `controller`=2 | high | | `src.ai_client._send_llama_native` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | -| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models._save_config_to_disk` | `whole_struct` | | low | -| `src.ai_client._send_qwen` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | -| `src.ai_client._strip_private_keys` | `whole_struct` | | low | -| `src.ai_client._estimate_prompt_tokens` | `whole_struct` | | low | -| `src.ai_client.ollama_chat` | `whole_struct` | | low | -| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | -| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | -| `src.ai_client._send_deepseek` | `whole_struct` | | low | -| `src.ai_client._send_llama` | `whole_struct` | | low | -| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | -| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | -| `src.aggregate._build_files_section_from_items` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `src.ai_client._estimate_message_tokens` | `mixed` | `_est_tokens`=1, `get`=2 | high | +| `src.app_controller._handle_mma_state_update` | `field_by_field` | `get`=1, `active_track`=5, `_mma_status`=2, `active_tier`=6, `active_tickets`=2, `mma_tier_usage`=6, `_cb_load_workspace_profile`=1 | high | +| `src.ai_client._list_deepseek_models` | `whole_struct` | | low | +| `src.api_hooks.__init__` | `whole_struct` | `app`=1 | high | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.multi_agent_conductor.approve_task` | `mixed` | `_dirty`=1, `engine`=1 | high | +| `src.gui_2.ui_screenshot_paths` | `whole_struct` | `screenshots`=1 | high | +| `src.imgui_scopes.__init__` | `field_by_field` | `_id`=1, `_flags`=1, `_size`=2 | high | +| `src.ai_client._extract_gemini_thoughts_result` | `whole_struct` | | low | +| `src.theme_2.get_brightness` | `whole_struct` | | low | +| `src.history.undo` | `mixed` | `_undo_stack`=2, `_redo_stack`=1 | high | +| `src.gui_2._drain_normalize_errors` | `whole_struct` | `values`=1 | high | +| `src.app_controller._rename_discussion` | `field_by_field` | `ai_status`=1, `active_discussion`=2, `project`=1 | high | +| `src.mcp_client.get_file_slice` | `whole_struct` | | low | +| `src.imgui_scopes.tab_bar` | `whole_struct` | | low | +| `src.session_logger.log_tool_call` | `whole_struct` | | low | +| `src.gui_2.current_model` | `whole_struct` | `controller`=1 | high | +| `src.rag_engine.embed` | `whole_struct` | | low | +| `src.presets.get_preset_scope` | `mixed` | `project_root`=2, `_load_file`=2 | high | +| `src.code_path_audit.file_origin_memory_dim` | `whole_struct` | `startswith`=1 | high | +| `src.rag_engine.__init__` | `whole_struct` | `model`=1 | high | +| `src.theme_2.get_gamma` | `whole_struct` | | low | +| `src.imgui_scopes.style_var` | `whole_struct` | | low | +| `src.presets._save_file` | `whole_struct` | `parent`=4 | high | +| `src.aggregate.is_absolute_with_drive` | `whole_struct` | | low | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | `_report_worker_error`=1 | high | +| `src.app_controller.ui_file_paths` | `whole_struct` | `files`=1 | high | +| `src.app_controller.rag_emb_provider` | `whole_struct` | `rag_config`=2 | high | +| `src.code_path_audit.synthesize_aggregate_profile` | `whole_struct` | `get`=5 | high | +| `src.rag_engine._check_existing_index_result` | `whole_struct` | `collection`=1 | high | ### Frequency evidence | function | frequency | source | note | |---|---|---|---| -| `src.models.to_dict` | `per_turn` | `static_analysis` | producer from src\models.py | -| `src.api_hook_client.get_gui_diagnostics` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | -| `src.models.to_dict` | `per_turn` | `static_analysis` | producer from src\models.py | -| `src.app_controller._api_get_api_project` | `per_turn` | `static_analysis` | producer from src\app_controller.py | -| `src.api_hook_client.clear_events` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.gui_2._populate_auto_slices_file_read_result` | `per_turn` | `static_analysis` | producer from src\gui_2.py | +| `src.ai_client._try_warm_sdk_result` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.summarize._summarise_generic` | `per_turn` | `static_analysis` | producer from src\summarize.py | diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.tree b/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.tree index 7effb2fa..aa1252ba 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.tree +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.tree @@ -1,195 +1,1247 @@ Metadata: Metadata |- kind: typealias |- memory_dim: discussion -|- producers: [117] -| |- src.models.to_dict (producer) -| |- src.api_hook_client.get_gui_diagnostics (producer) -| |- src.models.to_dict (producer) -| |- src.app_controller._api_get_api_project (producer) -| |- src.api_hook_client.clear_events (producer) -| |- src.ai_client._build_chunked_context_blocks (producer) -| |- src.app_controller.get_api_project (producer) -| |- src.models.to_dict (producer) -| |- src.models.to_dict (producer) -| |- src.api_hook_client.get_mma_workers (producer) -| |- src.models.to_dict (producer) -| |- src.api_hook_client.get_startup_timeline (producer) -| |- src.models.to_dict (producer) -| |- src.app_controller._offload_entry_payload (producer) -| |- src.app_controller.generate (producer) -| |- src.api_hook_client.get_session (producer) -| |- src.api_hook_client.get_status (producer) -| |- src.app_controller.token_stats (producer) -| |- src.project_manager.flat_config (producer) -| |- src.api_hook_client._make_request (producer) -| |- src.api_hook_client.right_click (producer) -| |- src.ai_client._send_cli_round_result (producer) -| |- src.models.to_dict (producer) -| |- src.api_hook_client.trigger_patch (producer) -| |- src.api_hook_client.select_tab (producer) -| |- src.app_controller._api_get_session (producer) -| |- src.project_manager.str_to_entry (producer) -| |- src.app_controller._api_get_gui_state (producer) -| |- src.api_hook_client.click (producer) -| |- src.api_hook_client.get_gui_state (producer) -| |- src.project_manager.default_discussion (producer) -| |- src.ai_client._get_anthropic_tools (producer) -| |- src.app_controller.load_config (producer) -| |- src.project_manager.load_project (producer) -| |- src.api_hook_client.post_project (producer) -| |- src.models.parse_history_entries (producer) -| |- src.ai_client.get_gemini_cache_stats (producer) -| |- src.app_controller.pending_actions (producer) -| |- src.app_controller._api_get_performance (producer) -| |- src.ai_client._content_block_to_dict (producer) -| |- src.api_hook_client.get_patch_status (producer) -| |- src.api_hook_client.push_event (producer) -| |- src.models.to_dict (producer) -| |- src.api_hook_client.reject_patch (producer) -| |- src.api_hook_client.get_project (producer) -| |- src.models.to_dict (producer) -| |- src.app_controller._api_get_context (producer) -| |- src.app_controller.status (producer) -| |- src.ai_client._strip_private_keys (producer) -| |- src.api_hook_client.get_performance (producer) -| |- src.models.to_dict (producer) -| |- src.models.to_dict (producer) -| |- src.models.to_dict (producer) -| |- src.api_hook_client.select_list_item (producer) -| |- src.ai_client._add_bleed_derived (producer) -| |- src.api_hook_client.get_warmup_status (producer) -| |- src.models.to_dict (producer) -| |- src.app_controller._api_generate (producer) -| |- src.project_manager.get_all_tracks (producer) -| |- src.app_controller._api_status (producer) -| |- src.app_controller._api_token_stats (producer) -| |- src.api_hook_client.get_project_switch_status (producer) -| |- src.app_controller._api_get_api_session (producer) -| |- src.api_hook_client.post_session (producer) -| |- src.api_hook_client.get_system_telemetry (producer) -| |- src.ai_client._parse_tool_args_result (producer) -| |- src.api_hook_client.wait_for_project_switch (producer) -| |- src.api_hook_client.get_events (producer) -| |- src.app_controller.get_context (producer) -| |- src.ai_client._extract_dashscope_tool_calls (producer) -| |- src.api_hook_client.get_gui_health (producer) -| |- src.models.to_dict (producer) -| |- src.ai_client.get_comms_log (producer) -| |- src.project_manager.default_project (producer) -| |- src.api_hook_client.apply_patch (producer) +|- producers: [483] +| |- src.gui_2._populate_auto_slices_file_read_result (producer) +| |- src.ai_client._try_warm_sdk_result (producer) | |- src.api_hook_client.get_warmup_wait (producer) -| |- src.api_hook_client.get_warmup_canaries (producer) -| |- src.api_hook_client.get_financial_metrics (producer) -| |- src.models._load_config_from_disk (producer) -| |- src.ai_client.get_token_stats (producer) +| |- src.app_controller._pending_mma_spawn (producer) +| |- src.summarize._summarise_generic (producer) +| |- src.code_path_audit_ssdl.render_ssdl_sketch (producer) +| |- src.code_path_audit.generate_rationale (producer) +| |- src.file_cache.get_curated_view (producer) +| |- src.project_manager.get_all_tracks (producer) +| |- src.summarize.summarise_items (producer) +| |- src.theme_2.get_palette_names (producer) +| |- src.log_registry.get_old_non_whitelisted_sessions (producer) +| |- src.app_controller._api_post_api_session (producer) +| |- src.code_path_audit_ssdl.suggest_defusing_technique (producer) +| |- src.app_controller.load_config (producer) +| |- src.theme_models.load_themes_from_dir (producer) +| |- src.ai_client._list_llama_models (producer) +| |- src.project_manager.load_history (producer) +| |- src.project_manager.load_track_history (producer) +| |- src.ai_client._get_gemini_history_list (producer) +| |- src.mcp_client.py_find_usages (producer) +| |- src.mcp_client.ts_c_update_definition_result (producer) +| |- src.beads_client._read_beads (producer) +| |- src.mcp_tool_specs.tool_names (producer) +| |- src.tool_presets._read_raw (producer) +| |- src.app_controller.post_gui (producer) +| |- src.mcp_client.get_file_summary (producer) +| |- src.ai_client._get_deepseek_tools (producer) +| |- src.aggregate.run (producer) +| |- src.gui_2.ui_message (producer) +| |- src.file_cache.update_definition (producer) +| |- src.aggregate.build_markdown_from_items (producer) +| |- src.api_hook_client.get_session (producer) +| |- src.theme_2.get_syntax_palette_for_theme (producer) +| |- src.mcp_client.py_get_skeleton_result (producer) +| |- src.mcp_client.ts_c_get_definition_result (producer) +| |- src.app_controller.token_stats (producer) +| |- src.api_hook_client.trigger_patch (producer) +| |- src.mcp_client._ast_get_signature (producer) +| |- src.app_controller._api_get_api_project (producer) +| |- src.mcp_client.get_tree (producer) +| |- src.project_manager.calculate_track_progress (producer) +| |- src.warmup.status (producer) +| |- src.app_controller._api_token_stats (producer) +| |- src.mcp_client.py_set_signature (producer) +| |- src.api_hook_client.get_gui_diagnostics (producer) +| |- src.app_controller._api_get_api_session (producer) +| |- src.mcp_client.ts_cpp_get_skeleton (producer) +| |- src.models.to_dict (producer) +| |- src.markdown_helper.detect_language (producer) +| |- src.gui_2.askdirectory (producer) +| |- src.mcp_client.get_file_summary_result (producer) | |- src.aggregate.build_file_items (producer) -| |- src.app_controller.get_session_insights (producer) +| |- src.api_hook_client.get_performance (producer) +| |- src.ai_client._load_credentials (producer) +| |- src.file_cache.get_file_id (producer) +| |- src.startup_profiler.snapshot (producer) +| |- src.gui_2.__getattr__ (producer) +| |- src.aggregate.build_beads_section (producer) +| |- src.gui_2._capture_workspace_profile_ini_result (producer) +| |- src.outline_tool.get_outline (producer) +| |- src.gui_2._render_context_batch_actions_preview_result (producer) +| |- src.api_hook_client.approve_mma_ticket (producer) +| |- src.app_controller._confirm_and_run (producer) +| |- src.ai_client._send_gemini (producer) +| |- src.app_controller.current_model (producer) +| |- src.ai_client.run_tier4_analysis (producer) +| |- src.app_controller.rag_source (producer) +| |- src.shell_runner._build_subprocess_env (producer) +| |- src.app_controller._api_health (producer) +| |- src.api_hooks._get_app_attr (producer) +| |- src.ai_client._send_llama_native (producer) +| |- src.app_controller.current_provider (producer) +| |- src.summary_cache.get_stats (producer) +| |- src.ai_client._list_deepseek_models (producer) +| |- src.app_controller._api_status (producer) +| |- src.ai_client.ollama_chat (producer) +| |- src.mcp_client.dispatch (producer) +| |- src.openai_schemas.to_legacy_dict (producer) +| |- src.session_logger.log_tool_call (producer) +| |- src.gui_2._render_ast_inspector_outline_result (producer) +| |- src.shell_runner._load_env_config (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client.send (producer) +| |- src.api_hook_client.get_system_telemetry (producer) +| |- src.mcp_client.ts_cpp_get_code_outline (producer) +| |- src.mcp_client.py_update_definition_result (producer) +| |- src.tool_bias.generate_tooling_strategy (producer) +| |- src.theme_2.get_current_font_path (producer) +| |- src.result_types.ui_message (producer) +| |- src.mcp_client.read_file (producer) +| |- src.mcp_client._build_tree (producer) +| |- src.ai_client._ensure_llama_client (producer) +| |- src.mcp_client.py_get_signature_result (producer) +| |- src.gui_2._resolve_font_path_result (producer) +| |- src.gui_2._diag_layout_state_ini_text_result (producer) +| |- src.ai_client._add_bleed_derived (producer) +| |- src.mcp_client._ast_update_definition (producer) +| |- src.ai_client._send_cli_round_result (producer) +| |- src.module_loader._require_warmed (producer) +| |- src.code_path_audit._extract_type_name (producer) +| |- src.performance_monitor.get_metrics (producer) +| |- src.ai_client._extract_dashscope_tool_calls (producer) +| |- src.mcp_client.fetch_url_result (producer) +| |- src.ai_client._execute_single_tool_call_async (producer) +| |- src.gui_2.missing_files (producer) +| |- src.events.to_dict (producer) +| |- src.app_controller.startup_timeline (producer) +| |- src.aggregate._build_files_section_from_items (producer) +| |- src.ai_client.list_models (producer) +| |- src.ai_client._run_script (producer) +| |- src.app_controller._offload_entry_payload (producer) +| |- src.ai_client._strip_private_keys (producer) +| |- src.mcp_client.get_git_diff_result (producer) +| |- src.app_controller.warmup_status (producer) +| |- src.mcp_client.ts_cpp_update_definition_result (producer) +| |- src.api_hook_client.pause_mma_pipeline (producer) +| |- src.mcp_client.ts_cpp_update_definition (producer) +| |- src.api_hook_client.reject_patch (producer) +| |- src.session_logger._now_ts (producer) +| |- src.ai_client._parse_tool_args_result (producer) +| |- src.gui_2._render_warmup_status_indicator_result (producer) +| |- src.workspace_manager.load_all_profiles (producer) +| |- src.models.to_dict (producer) +| |- src.aggregate.group_files_by_dir (producer) +| |- src.ai_client.run_tier4_patch_generation (producer) +| |- src.ai_client._build_chunked_context_blocks (producer) +| |- src.mcp_client.async_dispatch (producer) +| |- src.code_path_audit_cross_audit._normalize_path (producer) +| |- src.orchestrator_pm.generate_tracks (producer) +| |- src.mcp_client.py_get_definition_result (producer) +| |- src.mcp_client.list_directory_result (producer) +| |- src.mcp_client.ts_cpp_get_skeleton_result (producer) +| |- src.mcp_tool_specs.to_dict (producer) +| |- src.code_path_audit_cross_audit.map_finding_to_aggregates (producer) +| |- src.app_controller._get_discussion_names (producer) +| |- src.mcp_client.py_get_imports (producer) +| |- src.synthesis_formatter.format_takes_diff (producer) +| |- src.models.to_dict (producer) +| |- src.mcp_client.search_files (producer) +| |- src.dag_engine.topological_sort (producer) +| |- src.code_path_audit_ssdl.render_organization_deductions (producer) +| |- src.mcp_client.py_get_var_declaration_result (producer) +| |- src.ai_client._pre_dispatch (producer) +| |- src.fuzzy_anchor.get_context (producer) +| |- src.mcp_client.read_file_result (producer) +| |- src.mcp_client.derive_code_path (producer) +| |- src.ai_client._get_context_marker (producer) +| |- src.mcp_client.ts_cpp_get_signature_result (producer) +| |- src.shell_runner.run_powershell (producer) +| |- src.code_path_audit_cross_audit.aggregate_findings (producer) +| |- src.ai_client._send_minimax (producer) +| |- src.code_path_audit_analysis._field_names_for_aggregate (producer) +| |- src.summarize.build_summary_markdown (producer) +| |- src.markdown_helper._normalize_bullet_delimiters (producer) +| |- src.app_controller._api_post_gui (producer) +| |- src.mcp_client.py_get_symbol_info (producer) +| |- src.app_controller._api_confirm_action (producer) +| |- src.warmup.canaries (producer) +| |- src.mcp_client.py_get_hierarchy (producer) +| |- src.ai_client.get_gemini_cache_stats (producer) +| |- src.api_hook_client.mutate_mma_dag (producer) +| |- src.models.provider (producer) +| |- src.ai_client._send_llama (producer) +| |- src.api_hook_client.get_context_state (producer) +| |- src.aggregate.build_discussion_text (producer) +| |- src.mcp_client.py_set_signature_result (producer) | |- src.api_hook_client.post_gui (producer) | |- src.models.to_dict (producer) -| |- src.app_controller._pending_mma_approval (producer) -| |- src.api_hook_client.drag (producer) -| |- src.api_hook_client.post_project (producer) -| |- src.app_controller.wait (producer) -| |- src.app_controller.get_session (producer) -| |- src.app_controller._api_get_mma_status (producer) -| |- src.app_controller._api_pending_actions (producer) +| |- src.app_controller.list_sessions (producer) +| |- src.ai_client._send_qwen (producer) +| |- src.fuzzy_anchor.create_slice (producer) +| |- src.app_controller.get_symbol_definition (producer) +| |- src.openai_compatible._to_dict_tool_call (producer) | |- src.api_hook_client.get_node_status (producer) -| |- src.api_hook_client.get_io_pool_status (producer) -| |- src.app_controller.get_mma_status (producer) -| |- src.models.to_dict (producer) -| |- src.models.to_dict (producer) -| |- src.app_controller._pending_mma_spawn (producer) +| |- src.mcp_client.py_set_var_declaration (producer) +| |- src.mcp_client.py_get_class_summary (producer) +| |- src.api_hook_client.post_session (producer) +| |- src.app_controller.delete_session (producer) | |- src.app_controller.get_performance (producer) -| |- src.api_hook_client.wait_for_event (producer) -| |- src.api_hook_client.get_context_state (producer) +| |- src.mcp_tool_specs.to_dict (producer) +| |- src.theme_models.to_dict (producer) +| |- src.code_path_audit_cross_audit._file_to_aggregates (producer) +| |- src.code_path_audit.to_markdown (producer) +| |- src.mcp_client.py_check_syntax_result (producer) +| |- src.models.to_dict (producer) +| |- src.code_path_audit.load_frequency_overrides (producer) +| |- src.ai_client._ensure_grok_client (producer) +| |- src.app_controller.pending_actions (producer) +| |- src.ai_client.get_token_stats (producer) +| |- src.models.to_dict (producer) +| |- src.models._load_config_from_disk (producer) +| |- src.orchestrator_pm.get_track_history_summary (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.mcp_client.ts_c_get_skeleton (producer) +| |- src.app_controller.warmup_canaries (producer) +| |- src.mcp_client.get_tool_schemas (producer) +| |- src.app_controller._extract_tool_name (producer) +| |- src.events._make_serializable (producer) +| |- src.models.to_dict (producer) +| |- src.command_palette.register (producer) +| |- src.ai_client._chunk_text (producer) +| |- src.code_path_audit_analysis._analyze_function_param_names (producer) +| |- src.summarize.summarise_file (producer) +| |- src.mcp_client.py_set_var_declaration_result (producer) +| |- src.code_path_audit_render.render_full_markdown (producer) +| |- src.ai_client.run_discussion_compression (producer) +| |- src.mcp_client.ts_cpp_get_definition (producer) +| |- src.ai_client._run_tier4_patch_generation_result (producer) +| |- src.history.to_dict (producer) +| |- src.api_hook_client.select_list_item (producer) +| |- src.models.to_dict (producer) +| |- src.mcp_client.get_all_tools (producer) +| |- src.project_manager.load_project (producer) +| |- src.ai_client._get_combined_system_prompt (producer) +| |- src.mcp_client.py_get_imports_result (producer) +| |- src.models.to_dict (producer) +| |- src.personas.load_all (producer) +| |- src.app_controller.get_session_insights (producer) +| |- src.app_controller.parse_symbols (producer) +| |- src.code_path_audit_render.render_call_graph_rollup (producer) +| |- src.api_hook_client.select_tab (producer) +| |- src.ai_client._list_grok_models (producer) +| |- src.app_controller._api_list_sessions (producer) +| |- src.beads_client.create_bead (producer) +| |- src.mcp_client.ts_c_get_code_outline (producer) +| |- src.mcp_client.py_get_definition (producer) +| |- src.app_controller.rag_mcp_server (producer) +| |- src.mcp_client.set_file_slice (producer) +| |- src.models.get (producer) +| |- src.mcp_client.search_files_result (producer) +| |- src.project_manager.default_discussion (producer) +| |- src.ai_client._extract_minimax_reasoning (producer) +| |- src.mcp_client.py_update_definition (producer) +| |- src.commands.register (producer) +| |- src.code_path_audit._atom (producer) +| |- src.ai_client._extract_gemini_thoughts_result (producer) +| |- src.rag_engine.get_all_indexed_paths (producer) +| |- src.mcp_client.ts_cpp_get_code_outline_result (producer) +| |- src.diff_viewer.get_line_color (producer) +| |- src.mcp_client.get_file_slice (producer) | |- src.ai_client._dashscope_call (producer) +| |- src.external_editor.create_temp_modified_file (producer) +| |- src.models.model (producer) +| |- src.commands.__getattr__ (producer) +| |- src.summary_cache.get_file_hash (producer) +| |- src.presets.get_preset_scope (producer) +| |- src.app_controller._compute_warmup_list (producer) +| |- src.app_controller._resolve_log_ref (producer) +| |- src.api_hook_client.clear_events (producer) +| |- src.app_controller.stream (producer) +| |- src.ai_client._create_gemini_cache_result (producer) +| |- src.app_controller._api_get_diagnostics (producer) +| |- src.app_controller.get_gui_state (producer) +| |- src.code_path_audit.read_input_json (producer) +| |- src.api_hook_client.get_project (producer) +| |- src.mcp_client.web_search_result (producer) +| |- src.aggregate.build_tier3_context (producer) +| |- src.app_controller._api_get_session (producer) +| |- src.mcp_client.py_get_code_outline (producer) +| |- src.app_controller._api_pending_actions (producer) +| |- src.log_registry.__getitem__ (producer) +| |- src.gui_2.app_debug_info (producer) +| |- src.mcp_client.py_get_signature (producer) +| |- src.events.get (producer) +| |- src.app_controller.get_context (producer) +| |- src.mcp_client.py_get_docstring (producer) +| |- src.openai_schemas.to_dict (producer) +| |- src.mcp_client.py_get_symbol_info_result (producer) +| |- src.api_hook_client.kill_mma_worker (producer) +| |- src.external_editor.build_diff_command (producer) +| |- src.presets._load_file (producer) +| |- src.api_hook_client.get_gui_state (producer) +| |- src.mcp_client.derive_code_path_result (producer) +| |- src.code_path_audit_ssdl.render_ssdl_rollup (producer) +| |- src.gui_2.current_provider (producer) +| |- src.openai_schemas.to_dict (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.app_controller.ai_status (producer) +| |- src.api_hook_client.get_gui_health (producer) +| |- src.ai_client.run_with_tool_loop (producer) +| |- src.api_hook_client.get_text_value (producer) +| |- src.app_controller._api_get_context (producer) +| |- src.ai_client.get_provider (producer) +| |- src.log_registry.to_dict (producer) +| |- src.file_cache.get_targeted_view (producer) +| |- src.mcp_client.ts_cpp_get_signature (producer) +| |- src.mcp_client.ts_c_get_code_outline_result (producer) +| |- src.aggregate.build_markdown_no_history (producer) +| |- src.mcp_client.edit_file_result (producer) +| |- src.summarize._summarise_markdown (producer) +| |- src.api_hook_client.get_mma_status (producer) +| |- src.app_controller.confirm_action (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client._build_file_context_text (producer) +| |- src.gui_2.askopenfilename (producer) +| |- src.file_cache.get_skeleton (producer) +| |- src.ai_client.run_tier4_patch_callback (producer) +| |- src.mcp_client._ast_get_definition (producer) +| |- src.app_controller._api_get_key (producer) +| |- src.markdown_helper._normalize_nested_list_endings (producer) +| |- src.app_controller.active_project_root (producer) +| |- src.app_controller.submit_io (producer) +| |- src.code_path_audit.to_tree (producer) +| |- src.aggregate.compute_file_stats (producer) +| |- src.mcp_client.py_get_code_outline_result (producer) +| |- src.mcp_client.ts_c_get_signature_result (producer) +| |- src.mcp_client.get_ui_performance (producer) +| |- src.models.__getattr__ (producer) +| |- src.log_registry.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.status (producer) +| |- src.gui_2.truncate_entries (producer) +| |- src.rag_engine._chunk_text (producer) +| |- src.app_controller.summary_cache (producer) +| |- src.aggregate.build_discussion_section (producer) +| |- src.app_controller.generate (producer) +| |- src.gui_2.ui_screenshot_paths (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.get_api_project (producer) +| |- src.api_hook_client.spawn_mma_worker (producer) +| |- src.project_manager.flat_config (producer) +| |- src.mcp_client.web_search (producer) +| |- src.log_registry.get (producer) +| |- src.conductor_tech_lead.generate_tickets (producer) +| |- src.api_hook_client.click (producer) +| |- src.personas._load_file (producer) +| |- src.ai_client.get_comms_log (producer) +| |- src.app_controller._api_generate (producer) +| |- src.theme_models.to_dict (producer) +| |- src.ai_client._list_gemini_cli_models (producer) +| |- src.log_registry.sessions (producer) +| |- src.aggregate.build_markdown (producer) +| |- src.app_controller.rag_emb_provider (producer) +| |- src.file_cache.find_id (producer) +| |- src.aggregate.build_screenshots_section (producer) +| |- src.ai_client._send_gemini_cli (producer) +| |- src.markdown_helper._normalize_list_continuations (producer) +| |- src.code_path_audit_render.render_field_usage_rollup (producer) +| |- src.outline_tool.get_docstring (producer) +| |- src.api_hook_client._make_request (producer) | |- src.app_controller.get_diagnostics (producer) +| |- src.api_hooks._safe_controller_result (producer) +| |- src.code_path_audit._resolve_aliases (producer) +| |- src.ai_client._content_block_to_dict (producer) +| |- src.project_manager.entry_to_str (producer) +| |- src.conductor_tech_lead.topological_sort (producer) +| |- src.mcp_client.get_tree_result (producer) +| |- src.mcp_client.ts_cpp_get_definition_result (producer) +| |- src.paths.get_full_path_info (producer) +| |- src.app_controller.get_api_session (producer) +| |- src.mcp_client.async_dispatch (producer) +| |- src.code_path_audit.render_rollups (producer) +| |- src.gui_2.asksaveasfilename (producer) +| |- src.mcp_client.py_get_class_summary_result (producer) +| |- src.gui_2.current_model (producer) +| |- src.app_controller._do_generate (producer) +| |- src.app_controller.mcp_config_json (producer) +| |- src.mcp_client.get_ui_performance_result (producer) +| |- src.app_controller.wait (producer) +| |- src.app_controller.ui_file_paths (producer) +| |- src.personas.get_persona_scope (producer) +| |- src.ai_client.get_combined_system_prompt (producer) +| |- src.code_path_audit.to_dsl_v2 (producer) +| |- src.api_hook_client.wait_for_event (producer) +| |- src.summarize._summarise_python (producer) +| |- src.file_cache._get_name (producer) +| |- src.app_controller.__getattr__ (producer) +| |- src.ai_client._list_qwen_models (producer) +| |- src.file_cache.get_definition (producer) +| |- src.api_hook_client.get_warmup_status (producer) +| |- src.code_path_audit.code_path_audit_v2 (producer) +| |- src.api_hook_client.get_mma_workers (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.now_ts (producer) +| |- src.commands._get_real_registry (producer) +| |- src.code_path_audit_cross_audit._aggregate_for_fqname (producer) +| |- src.project_manager.clean_nones (producer) +| |- src.ai_client._run_tier4_analysis_result (producer) +| |- src.models._clean_nones (producer) +| |- src.mcp_client.fetch_url (producer) +| |- src.ai_client._get_anthropic_tools (producer) +| |- src.models.to_dict (producer) +| |- src.tool_presets.load_all_presets (producer) +| |- src.mcp_client.py_get_docstring_result (producer) +| |- src.models.parse_history_entries (producer) +| |- src.api_hook_client.get_events (producer) +| |- src.project_manager.str_to_entry (producer) +| |- src.mcp_client.set_file_slice_result (producer) +| |- src.workspace_manager._load_file (producer) +| |- src.mcp_client.get_servers_status (producer) +| |- src.ai_client.get_current_tier (producer) +| |- src.models.to_dict (producer) +| |- src.hot_reloader.capture_state (producer) +| |- src.presets.load_all (producer) +| |- src.code_path_audit.parse_dsl_v2 (producer) +| |- src.mcp_client.py_check_syntax (producer) +| |- src.mcp_client.edit_file (producer) +| |- src.app_controller.get_api_key (producer) +| |- src.mcp_client._ast_get_skeleton (producer) +| |- src.code_path_audit.run_all_cross_audit_reads (producer) +| |- src.api_hook_client.get_io_pool_status (producer) +| |- src.api_hook_client.get_status (producer) +| |- src.mcp_client._ast_get_code_outline (producer) +| |- src.ai_client.get_bias_profile (producer) +| |- src.tool_presets.load_all_bias_profiles (producer) +| |- src.api_hook_client.set_value (producer) +| |- src.app_controller.get_mma_status (producer) +| |- src.gemini_cli_adapter.send (producer) +| |- src.api_hook_client.inject_context (producer) +| |- src.app_controller._api_get_performance (producer) +| |- src.app_controller.rag_mcp_tool (producer) +| |- src.app_controller.post_api_session (producer) +| |- src.session_logger.log_tool_output (producer) +| |- src.api_hook_client.get_startup_timeline (producer) +| |- src.file_cache.get_code_outline (producer) +| |- src.project_manager.default_project (producer) +| |- src.mcp_client.get_file_slice_result (producer) +| |- src.app_controller._api_get_gui_state (producer) +| |- src.tool_presets.load_all (producer) +| |- src.rag_engine._read_file_content_result (producer) +| |- src.app_controller._api_delete_session (producer) +| |- src.gui_2.ui_file_paths (producer) +| |- src.mcp_client.get_git_diff (producer) | |- src.project_manager.migrate_from_legacy_config (producer) | |- src.models.to_dict (producer) -| |- src.ai_client._load_credentials (producer) -| |- src.app_controller._api_get_diagnostics (producer) +| |- src.summary_cache.get_summary (producer) +| |- src.warmup._snapshot (producer) +| |- src.file_cache.get_signature (producer) +| |- src.api_hook_client.push_event (producer) +| |- src.api_hook_client.get_warmup_canaries (producer) +| |- src.mcp_client.ts_c_update_definition (producer) +| |- src.api_hook_client.drag (producer) +| |- src.ai_client._truncate_tool_output (producer) +| |- src.api_hook_client.get_indicator_state (producer) +| |- src.theme_2.get_current_palette (producer) +| |- src.provider_state.providers (producer) +| |- src.api_hook_client.apply_patch (producer) +| |- src.project_manager.get_git_commit (producer) +| |- src.project_manager.format_discussion (producer) +| |- src.mcp_client.py_get_skeleton (producer) +| |- src.mcp_client.py_get_var_declaration (producer) +| |- src.ai_client._build_file_diff_text (producer) +| |- src.app_controller._api_get_mma_status (producer) +| |- src.markdown_table._split_row (producer) +| |- src.api_hook_client.get_patch_status (producer) +| |- src.api_hooks_helpers._get_app_attr (producer) +| |- src.mcp_client.py_find_usages_result (producer) +| |- src.outline_tool.outline (producer) +| |- src.qwen_adapter.build_dashscope_tools (producer) +| |- src.theme_2.get_font_loading_params (producer) +| |- src.api_hook_client.wait_for_project_switch (producer) | |- src.models.to_dict (producer) +| |- src.app_controller.health (producer) +| |- src.vendor_capabilities.list_models_for_vendor (producer) +| |- src.app_controller._api_stream (producer) +| |- src.api_hook_client.get_value (producer) +| |- src.summarize._summarise_toml (producer) +| |- src.app_controller.mma_status (producer) +| |- src.theme_models.load_themes_from_toml (producer) +| |- src.api_hook_client.get_project_switch_status (producer) +| |- src.app_controller.get_session (producer) +| |- src.ai_client._send_grok (producer) +| |- src.external_editor._find_vscode_common_paths (producer) +| |- src.mcp_client.ts_c_get_skeleton_result (producer) +| |- src.ai_client._send_anthropic (producer) +| |- src.mcp_client.ts_c_get_definition (producer) +| |- src.code_path_audit.load_memory_dim_overrides (producer) +| |- src.mcp_client.ts_c_get_signature (producer) +| |- src.app_controller._pending_mma_approval (producer) +| |- src.ai_client._send_deepseek (producer) | |- src.models.to_dict (producer) -| |- src.ai_client._get_deepseek_tools (producer) -| |- src.app_controller.get_api_session (producer) -| |- src.ai_client._pre_dispatch (producer) -| |- src.models.to_dict (producer) -| |- src.api_hook_client.get_mma_status (producer) -| |- src.api_hook_client.set_value (producer) -| |- src.project_manager.load_history (producer) -| |- src.ai_client.ollama_chat (producer) -| |- src.app_controller.get_gui_state (producer) -|- consumers: [66] -| |- src.aggregate.build_markdown_from_items (consumer) -| |- src.ai_client._send_anthropic (consumer) -| |- src.app_controller._refresh_api_metrics (consumer) +| |- src.api_hook_client.right_click (producer) +| |- src.ai_client.run_subagent_summarization (producer) +| |- src.theme_2._build_semantic_colour_dict (producer) +| |- src.api_hook_client.resume_mma_pipeline (producer) +| |- src.paths.info (producer) +| |- src.gui_2._populate_auto_slices_outline_result (producer) +| |- src.mcp_client.list_directory (producer) +| |- src.app_controller.rag_collection_name (producer) +| |- src.api_hook_client.get_financial_metrics (producer) +|- consumers: [752] | |- src.models.from_dict (consumer) -| |- src.ai_client._add_history_cache_breakpoint (consumer) -| |- src.ai_client._append_comms (consumer) +| |- src.code_path_audit.aggregate_cross_audit_findings (consumer) +| |- src.api_hook_client.approve_mma_ticket (consumer) +| |- src.log_registry.update_auto_whitelist_status (consumer) | |- src.models.from_dict (consumer) -| |- src.models.from_dict (consumer) -| |- src.ai_client._repair_deepseek_history (consumer) -| |- src.ai_client._dashscope_call (consumer) -| |- src.models.from_dict (consumer) -| |- src.ai_client._send_grok (consumer) -| |- src.models.from_dict (consumer) -| |- src.models.from_dict (consumer) -| |- src.aggregate.build_tier3_context (consumer) -| |- src.aggregate.build_markdown_no_history (consumer) -| |- src.models.from_dict (consumer) -| |- src.models.from_dict (consumer) -| |- src.project_manager.migrate_from_legacy_config (consumer) -| |- src.models.from_dict (consumer) -| |- src.app_controller._on_comms_entry (consumer) -| |- src.aggregate.run (consumer) -| |- src.ai_client._trim_minimax_history (consumer) -| |- src.app_controller._start_track_logic (consumer) -| |- src.project_manager.save_project (consumer) | |- src.ai_client._send_gemini (consumer) | |- src.models.from_dict (consumer) -| |- src.project_manager.format_discussion (consumer) -| |- src.ai_client._repair_minimax_history (consumer) -| |- src.models.from_dict (consumer) -| |- src.ai_client._repair_anthropic_history (consumer) -| |- src.ai_client._pre_dispatch (consumer) -| |- src.ai_client._strip_stale_file_refreshes (consumer) -| |- src.ai_client.send (consumer) -| |- src.app_controller._offload_entry_payload (consumer) -| |- src.app_controller._start_track_logic_result (consumer) -| |- src.ai_client._send_minimax (consumer) +| |- src.project_manager.save_project (consumer) +| |- src.ai_client.run_tier4_analysis (consumer) +| |- src.app_controller._flush_to_project_result (consumer) +| |- src.code_path_audit.classify_memory_dim (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.beads_client.create_bead (consumer) +| |- src.command_palette.fuzzy_match (consumer) +| |- src.theme_2.set_gamma (consumer) +| |- src.multi_agent_conductor.update_task_status (consumer) +| |- src.code_path_audit.estimate_call_frequency (consumer) +| |- src.file_cache.walk (consumer) +| |- src.code_path_audit.detect_access_pattern (consumer) +| |- src.api_hooks._get_app_attr (consumer) | |- src.ai_client._send_llama_native (consumer) -| |- src.models.from_dict (consumer) -| |- src.ai_client._create_gemini_cache_result (consumer) -| |- src.project_manager.entry_to_str (consumer) -| |- src.models.from_dict (consumer) -| |- src.models.from_dict (consumer) -| |- src.models._save_config_to_disk (consumer) -| |- src.ai_client._send_qwen (consumer) -| |- src.models.from_dict (consumer) -| |- src.models.from_dict (consumer) -| |- src.ai_client._trim_anthropic_history (consumer) -| |- src.ai_client._strip_private_keys (consumer) -| |- src.ai_client._estimate_prompt_tokens (consumer) -| |- src.ai_client.ollama_chat (consumer) -| |- src.ai_client._execute_single_tool_call_async (consumer) -| |- src.project_manager.flat_config (consumer) -| |- src.ai_client._send_deepseek (consumer) -| |- src.ai_client._send_llama (consumer) +| |- src.app_controller._handle_mma_state_update (consumer) +| |- src.ai_client._list_deepseek_models (consumer) +| |- src.api_hooks.__init__ (consumer) +| |- src.app_controller._on_comms_entry (consumer) +| |- src.multi_agent_conductor.approve_task (consumer) +| |- src.gui_2.ui_screenshot_paths (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.ai_client._extract_gemini_thoughts_result (consumer) +| |- src.theme_2.get_brightness (consumer) +| |- src.history.undo (consumer) +| |- src.gui_2._drain_normalize_errors (consumer) +| |- src.app_controller._rename_discussion (consumer) +| |- src.mcp_client.get_file_slice (consumer) +| |- src.imgui_scopes.tab_bar (consumer) +| |- src.session_logger.log_tool_call (consumer) +| |- src.gui_2.current_model (consumer) +| |- src.rag_engine.embed (consumer) +| |- src.presets.get_preset_scope (consumer) +| |- src.code_path_audit.file_origin_memory_dim (consumer) +| |- src.rag_engine.__init__ (consumer) +| |- src.theme_2.get_gamma (consumer) +| |- src.imgui_scopes.style_var (consumer) +| |- src.presets._save_file (consumer) +| |- src.aggregate.is_absolute_with_drive (consumer) +| |- src.app_controller._topological_sort_tickets_result (consumer) +| |- src.app_controller.ui_file_paths (consumer) +| |- src.app_controller.rag_emb_provider (consumer) +| |- src.code_path_audit.synthesize_aggregate_profile (consumer) +| |- src.rag_engine._check_existing_index_result (consumer) +| |- src.code_path_audit.read_input_json (consumer) +| |- src.file_cache.walk (consumer) +| |- src.log_registry.is_session_whitelisted (consumer) +| |- src.mcp_client.py_update_definition_result (consumer) +| |- src.markdown_helper.render_unindented (consumer) +| |- src.summary_cache.set_summary (consumer) +| |- src.qwen_adapter.classify_dashscope_error (consumer) +| |- src.app_controller._cb_save_view_preset (consumer) +| |- src.gui_2.delete_context_preset (consumer) +| |- src.imgui_scopes.style_color (consumer) +| |- src.app_controller._handle_set_tool_log_dirty (consumer) +| |- src.mcp_client.read_file (consumer) +| |- src.app_controller._api_get_session (consumer) +| |- src.theme_2.get_contrast (consumer) +| |- src.external_editor.launch_diff (consumer) +| |- src.paths.get_archive_dir (consumer) +| |- src.theme_models.from_dict (consumer) +| |- src.ai_client._classify_minimax_error (consumer) +| |- src.rag_engine._chunk_code_result (consumer) +| |- src.app_controller._set_rag_status (consumer) +| |- src.gui_2._resolve_font_path_result (consumer) | |- src.ai_client._add_bleed_derived (consumer) -| |- src.ai_client._send_gemini_cli (consumer) -| |- src.aggregate._build_files_section_from_items (consumer) -| |- src.models.from_dict (consumer) -| |- src.models.from_dict (consumer) -| |- src.ai_client._invalidate_token_estimate (consumer) +| |- src.app_controller.__init__ (consumer) +| |- src.gui_2._diag_layout_state_ini_text_result (consumer) +| |- src.mcp_client._ast_update_definition (consumer) +| |- src.app_controller.mutate_dag (consumer) +| |- src.mcp_client.py_get_symbol_info_result (consumer) +| |- src.app_controller.cb_load_prior_log (consumer) +| |- src.rag_engine.embed (consumer) | |- src.models.from_dict (consumer) +| |- src.project_manager.save_track_history (consumer) +| |- src.ai_client.set_current_tier (consumer) +| |- src.ai_client._send_cli_round_result (consumer) +| |- src.app_controller._save_fallback_project_result (consumer) +| |- src.module_loader._require_warmed (consumer) +| |- src.models.load_mcp_config (consumer) +| |- src.ai_client._extract_dashscope_tool_calls (consumer) +| |- src.mcp_client.fetch_url_result (consumer) | |- src.ai_client._strip_cache_controls (consumer) +| |- src.app_controller._handle_clear_summary_cache (consumer) +| |- src.gui_2._tier_stream_scroll_sync_result (consumer) +| |- src.workspace_manager.delete_profile (consumer) +| |- src.app_controller._update_gcli_adapter (consumer) +| |- src.ai_client._estimate_prompt_tokens (consumer) +| |- src.mcp_client.handle_starttag (consumer) +| |- src.theme_2.set_contrast (consumer) +| |- src.app_controller._delete_discussion (consumer) +| |- src.aggregate._build_files_section_from_items (consumer) +| |- src.session_logger.open_session (consumer) +| |- src.api_hook_client.post_project (consumer) +| |- src.code_path_audit_analysis.compute_real_type_alias_coverage (consumer) +| |- src.context_presets.load_all (consumer) +| |- src.warmup.submit (consumer) +| |- src.gui_2._render_ast_inspector_file_content_result (consumer) +| |- src.ai_client.list_models (consumer) +| |- src.ai_client._run_script (consumer) +| |- src.ai_client._strip_private_keys (consumer) +| |- src.theme_2.load_from_config (consumer) +| |- src.app_controller._handle_click (consumer) +| |- src.warmup._record_failure (consumer) +| |- src.rag_engine._parse_search_response_result (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.commands._toggle_window (consumer) +| |- src.rag_engine.embed (consumer) +| |- src.mcp_client.ts_cpp_update_definition (consumer) +| |- src.mcp_client.ts_cpp_get_signature (consumer) +| |- src.events.__init__ (consumer) +| |- src.mcp_client.ts_c_get_code_outline_result (consumer) +| |- src.ai_client._dashscope_exception_from_response (consumer) +| |- src.multi_agent_conductor.update_usage (consumer) +| |- src.ai_client.set_agent_tools (consumer) +| |- src.code_path_audit.is_hot_cold_split (consumer) +| |- src.aggregate.group_files_by_dir (consumer) +| |- src.ai_client.run_tier4_patch_generation (consumer) +| |- src.app_controller._symbol_resolution_result (consumer) +| |- src.ai_client.set_bias_profile (consumer) +| |- src.ai_client._build_chunked_context_blocks (consumer) +| |- src.code_path_audit_cross_audit._normalize_path (consumer) +| |- src.mcp_client.async_dispatch (consumer) +| |- src.ai_client.run_tier4_patch_callback (consumer) +| |- src.orchestrator_pm.generate_tracks (consumer) +| |- src.command_palette._close_palette (consumer) +| |- src.markdown_helper._normalize_nested_list_endings (consumer) +| |- src.mcp_client.list_directory_result (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.app_controller.current_provider (consumer) +| |- src.code_path_audit_cross_audit.map_finding_to_aggregates (consumer) +| |- src.mcp_client.py_get_imports (consumer) +| |- src.external_editor.launch_editor (consumer) +| |- src.aggregate.compute_file_stats (consumer) +| |- src.gui_2.render_discussion_entry_read_mode (consumer) +| |- src.mcp_client.search_files (consumer) +| |- src.code_path_audit.P3_pass (consumer) +| |- src.mcp_client.ts_c_get_signature_result (consumer) +| |- src.code_path_audit_ssdl.render_organization_deductions (consumer) +| |- src.mcp_client.py_get_var_declaration_result (consumer) +| |- src.tool_presets.delete_bias_profile (consumer) +| |- src.ai_client._pre_dispatch (consumer) +| |- src.mcp_client.read_file_result (consumer) | |- src.models.from_dict (consumer) +| |- src.gui_2.render_path_field (consumer) +| |- src.mcp_client.ts_cpp_get_signature_result (consumer) +| |- src.mcp_client.derive_code_path (consumer) | |- src.models.from_dict (consumer) +| |- src.shell_runner.run_powershell (consumer) +| |- src.app_controller._on_ai_stream (consumer) +| |- src.code_path_audit_cross_audit.aggregate_findings (consumer) +| |- src.ai_client._send_minimax (consumer) +| |- src.summarize.build_summary_markdown (consumer) +| |- src.markdown_helper._normalize_bullet_delimiters (consumer) +| |- src.app_controller._api_post_gui (consumer) +| |- src.presets.delete_preset (consumer) +| |- src.app_controller._handle_hide_patch_modal (consumer) +| |- src.gui_2.ui_file_paths (consumer) +| |- src.app_controller._api_confirm_action (consumer) +| |- src.mcp_client.py_get_symbol_info (consumer) +| |- src.code_path_audit_analysis.analyze_consumer_pattern (consumer) +| |- src.app_controller._cb_load_track_result (consumer) +| |- src.mcp_client.py_get_hierarchy (consumer) +| |- src.models.from_dict (consumer) +| |- src.context_presets.delete_preset (consumer) +| |- src.warmup._warmup_one (consumer) +| |- src.gui_2.truncate_entries (consumer) +| |- src.api_hook_client.mutate_mma_dag (consumer) +| |- src.mcp_tool_specs.get_tool_spec (consumer) +| |- src.aggregate.build_discussion_text (consumer) +| |- src.presets.save_preset (consumer) +| |- src.mcp_client.py_set_signature_result (consumer) +| |- src.api_hook_client.post_gui (consumer) +| |- src.project_manager.flat_config (consumer) +| |- src.performance_monitor.get_history (consumer) +| |- src.imgui_scopes.menu (consumer) +| |- src.ai_client._send_qwen (consumer) +| |- src.command_palette.render_palette_modal (consumer) +| |- src.api_hooks.__init__ (consumer) +| |- src.fuzzy_anchor.create_slice (consumer) +| |- src.tool_presets._get_path (consumer) +| |- src.app_controller.get_symbol_definition (consumer) +| |- src.markdown_helper._render_code_block (consumer) +| |- src.api_hook_client.get_node_status (consumer) +| |- src.beads_client.update_bead (consumer) +| |- src.rag_engine.index_file (consumer) +| |- src.mcp_client.py_set_var_declaration (consumer) +| |- src.app_controller._create_discussion (consumer) +| |- src.gui_2._simulate_save_preset (consumer) +| |- src.app_controller.delete_session (consumer) +| |- src.aggregate.build_markdown (consumer) +| |- src.multi_agent_conductor.confirm_execution (consumer) +| |- src.app_controller._handle_mma_step_approval (consumer) +| |- src.imgui_scopes.tree_node_ex (consumer) +| |- src.mcp_client.py_check_syntax_result (consumer) +| |- src.code_path_audit.load_frequency_overrides (consumer) +| |- src.history.push (consumer) +| |- src.app_controller.mma_status (consumer) +| |- src.app_controller._cb_save_workspace_profile (consumer) +| |- src.api_hooks._safe_controller_result (consumer) +| |- src.ai_client.get_token_stats (consumer) +| |- src.gui_2._on_warmup_complete_callback (consumer) +| |- src.rag_engine.delete_documents (consumer) +| |- src.ai_client._trim_anthropic_history (consumer) +| |- src.command_palette._compute_score (consumer) +| |- src.mcp_client.ts_c_get_skeleton (consumer) +| |- src.conductor_tech_lead.topological_sort (consumer) +| |- src.personas.save_persona (consumer) +| |- src.app_controller._spawn_worker (consumer) +| |- src.markdown_helper.render_code (consumer) +| |- src.app_controller._extract_tool_name (consumer) +| |- src.app_controller.__init__ (consumer) +| |- src.events._make_serializable (consumer) +| |- src.multi_agent_conductor.worker_comms_callback (consumer) +| |- src.code_path_audit.add_field_access (consumer) +| |- src.command_palette.register (consumer) +| |- src.project_manager.branch_discussion (consumer) +| |- src.summarize.summarise_file (consumer) +| |- src.models.mark_blocked (consumer) +| |- src.mcp_client.py_set_var_declaration_result (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.app_controller.approve_ticket (consumer) +| |- src.ai_client.run_discussion_compression (consumer) +| |- src.command_palette._is_subsequence (consumer) +| |- src.file_cache.__init__ (consumer) +| |- src.app_controller.__init__ (consumer) +| |- src.paths.get_tracks_dir (consumer) +| |- src.theme_2.get_role_tint (consumer) +| |- src.app_controller._do_project_switch (consumer) +| |- src.patch_modal.apply_patch (consumer) +| |- src.thinking_parser.parse_thinking_trace (consumer) +| |- src.app_controller._handle_show_track_proposal (consumer) +| |- src.app_controller.load_context_preset (consumer) +| |- src.ai_client._run_tier4_patch_callback_result (consumer) +| |- src.code_path_audit_ssdl.detect_nil_check_pattern (consumer) +| |- src.mcp_client.py_get_imports_result (consumer) +| |- src.markdown_helper.render_unindented (consumer) +| |- src.ai_client._set_tool_preset_result (consumer) +| |- src.app_controller._handle_set_value (consumer) +| |- src.code_path_audit_ssdl.count_branches_in_function (consumer) +| |- src.tool_presets.save_bias_profile (consumer) +| |- src.app_controller.parse_symbols (consumer) +| |- src.api_hook_client.select_tab (consumer) +| |- src.ai_client._run_tier4_analysis_result (consumer) +| |- src.multi_agent_conductor.confirm_spawn (consumer) +| |- src.imgui_scopes.child (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.resolve_paths (consumer) +| |- src.app_controller.inject_context (consumer) +| |- src.mcp_client.ts_c_get_code_outline (consumer) +| |- src.mcp_client.py_get_definition (consumer) +| |- src.mcp_client.set_file_slice (consumer) +| |- src.models.get (consumer) +| |- src.mcp_client.search_files_result (consumer) +| |- src.ai_client._extract_minimax_reasoning (consumer) +| |- src.mcp_client.py_update_definition (consumer) +| |- src.mcp_client.find_in_scope (consumer) +| |- src.code_path_audit._atom (consumer) +| |- src.commands.register (consumer) +| |- src.mcp_client.handle_data (consumer) +| |- src.theme_2.set_brightness (consumer) +| |- src.models.from_dict (consumer) +| |- src.rag_engine.__init__ (consumer) +| |- src.app_controller._cb_start_track (consumer) +| |- src.code_path_audit_ssdl._resolve_filepath (consumer) +| |- src.workspace_manager._save_file (consumer) +| |- src.app_controller._append_tool_log (consumer) +| |- src.mcp_client.ts_cpp_get_code_outline_result (consumer) +| |- src.diff_viewer.get_line_color (consumer) +| |- src.app_controller._cb_delete_persona (consumer) +| |- src.context_presets.save_preset (consumer) +| |- src.ai_client._dashscope_call (consumer) +| |- src.app_controller._test_callback_func_write_to_file (consumer) +| |- src.external_editor.create_temp_modified_file (consumer) +| |- src.commands.__getattr__ (consumer) +| |- src.events.emit (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.mcp_client._get_symbol_node (consumer) +| |- src.summary_cache.get_file_hash (consumer) +| |- src.app_controller._apply_preset (consumer) +| |- src.app_controller._resolve_log_ref (consumer) +| |- src.openai_compatible._send_streaming (consumer) +| |- src.ai_client._create_gemini_cache_result (consumer) +| |- src.app_controller._list_models_for_provider_result (consumer) +| |- src.app_controller._cb_ticket_retry (consumer) +| |- src.project_manager.load_track_state (consumer) +| |- src.file_cache.walk (consumer) +| |- src.command_palette._count_gaps (consumer) +| |- src.mcp_client.web_search_result (consumer) +| |- src.aggregate.build_tier3_context (consumer) +| |- src.mcp_client.py_get_code_outline (consumer) +| |- src.app_controller._handle_custom_callback (consumer) +| |- src.ai_client._repair_minimax_history (consumer) +| |- src.gemini_cli_adapter.send (consumer) +| |- src.theme_2.get_color (consumer) +| |- src.diff_viewer.parse_diff (consumer) +| |- src.log_registry.__getitem__ (consumer) +| |- src.app_controller.kill_worker (consumer) +| |- src.mcp_client.py_get_signature (consumer) +| |- src.code_path_audit.build_pcg (consumer) +| |- src.app_controller._handle_set_mma_status (consumer) +| |- src.api_hooks._parse_float_result (consumer) +| |- src.mcp_client.py_get_docstring (consumer) +| |- src.api_hook_client.kill_mma_worker (consumer) +| |- src.ai_client._classify_anthropic_error (consumer) +| |- src.app_controller.resolve_pending_action (consumer) +| |- src.external_editor.build_diff_command (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.app_controller._record_startup_timeline_error (consumer) +| |- src.rag_engine.add_documents (consumer) +| |- src.history.jump_to_undo (consumer) +| |- src.mcp_client.derive_code_path_result (consumer) +| |- src.app_controller._on_api_event (consumer) +| |- src.project_manager.default_project (consumer) +| |- src.mcp_client.get_file_slice_result (consumer) +| |- src.rag_engine._get_file_mtime_result (consumer) +| |- src.app_controller._api_delete_session (consumer) +| |- src.code_path_audit_ssdl.render_ssdl_rollup (consumer) +| |- src.theme_2.reset_tone_mapping (consumer) +| |- src.ai_client._should_cache_gemini_result (consumer) +| |- src.app_controller._refresh_api_metrics (consumer) +| |- src.command_palette._is_contiguous (consumer) +| |- src.warmup._record_success (consumer) +| |- src.api_hooks._set_app_attr (consumer) +| |- src.app_controller._handle_clear_ask (consumer) +| |- src.app_controller.rag_mcp_server (consumer) +| |- src.ai_client.set_base_system_prompt (consumer) +| |- src.ai_client._set_minimax_provider_result (consumer) +| |- src.api_hook_client.drag (consumer) +| |- src.app_controller._fetch_models (consumer) +| |- src.ai_client._count_gemini_tokens_for_stats_result (consumer) +| |- src.gui_2._cb_kill_ticket (consumer) +| |- src.multi_agent_conductor._count_tokens (consumer) +| |- src.warmup._log_stderr (consumer) +| |- src.gui_2._ticket_id_max_int_result (consumer) +| |- src.ai_client.run_with_tool_loop (consumer) +| |- src.api_hook_client.get_text_value (consumer) +| |- src.ai_client.set_project_context_marker (consumer) +| |- src.log_registry.from_dict (consumer) +| |- src.file_cache.get_targeted_view (consumer) +| |- src.markdown_helper.render (consumer) +| |- src.markdown_table._split_row (consumer) +| |- src.code_path_audit_cross_audit._all_function_refs (consumer) +| |- src.theme_nerv_fx.update (consumer) +| |- src.api_hooks_helpers._get_app_attr (consumer) +| |- src.tool_presets.delete_preset (consumer) +| |- src.aggregate.build_markdown_no_history (consumer) +| |- src.mcp_client.edit_file_result (consumer) +| |- src.app_controller.current_model (consumer) +| |- src.app_controller.confirm_action (consumer) +| |- src.beads_client._write_beads (consumer) +| |- src.outline_tool.outline (consumer) +| |- src.summarize._summarise_markdown (consumer) +| |- src.gui_2._test_callback_func_write_to_file (consumer) +| |- src.diff_viewer.parse_hunk_header (consumer) +| |- src.app_controller._cb_ticket_skip (consumer) +| |- src.file_cache.get_skeleton (consumer) +| |- src.mcp_client._ast_get_definition (consumer) +| |- src.app_controller._api_get_key (consumer) +| |- src.rag_engine.delete_documents_by_path (consumer) +| |- src.ai_client._repair_anthropic_history (consumer) +| |- src.vendor_capabilities.list_models_for_vendor (consumer) +| |- src.fuzzy_anchor.resolve_slice (consumer) +| |- src.markdown_helper.render (consumer) +| |- src.app_controller._handle_drag (consumer) +| |- src.rag_engine.search (consumer) +| |- src.markdown_helper._on_open_link (consumer) +| |- src.cost_tracker.estimate_cost (consumer) +| |- src.mcp_client.py_get_code_outline_result (consumer) +| |- src.models.from_dict (consumer) +| |- src.performance_monitor.scope (consumer) +| |- src.app_controller._rag_search_result (consumer) +| |- src.models.__getattr__ (consumer) +| |- src.session_logger.log_comms (consumer) +| |- src.code_path_audit_ssdl.compute_effective_codepaths (consumer) +| |- src.code_path_audit.dominant_pattern (consumer) +| |- src.paths.get_track_state_dir (consumer) +| |- src.mcp_client.configure (consumer) +| |- src.theme_2.apply_syntax_palette (consumer) +| |- src.startup_profiler.phase (consumer) +| |- src.app_controller._deserialize_active_track_result (consumer) +| |- src.log_pruner.__init__ (consumer) +| |- src.rag_engine._chunk_text (consumer) +| |- src.file_cache.deep_search (consumer) +| |- src.app_controller.rag_source (consumer) +| |- src.markdown_table.parse_tables (consumer) +| |- src.gui_2._load_fonts_main_result (consumer) +| |- src.api_hook_client.right_click (consumer) +| |- src.aggregate.build_discussion_section (consumer) +| |- src.gui_2._on_warmup_complete_callback_result (consumer) +| |- src.app_controller.start_services (consumer) +| |- src.api_hook_client.spawn_mma_worker (consumer) +| |- src.code_path_audit.P2_pass (consumer) +| |- src.imgui_scopes.window (consumer) +| |- src.mcp_client.web_search (consumer) +| |- src.log_registry.get (consumer) +| |- src.code_path_audit.detect_frequency_from_entry_point (consumer) +| |- src.commands._toggle_attr (consumer) +| |- src.mcp_client.handle_starttag (consumer) +| |- src.gui_2.render_thinking_trace (consumer) +| |- src.api_hooks.__init__ (consumer) +| |- src.api_hook_client.click (consumer) +| |- src.conductor_tech_lead.generate_tickets (consumer) +| |- src.gui_2.__getattr__ (consumer) +| |- src.app_controller._handle_select_list_item (consumer) +| |- src.theme_models.from_dict (consumer) +| |- src.ai_client._add_history_cache_breakpoint (consumer) +| |- src.session_logger.reset_session (consumer) +| |- src.personas._save_file (consumer) +| |- src.code_path_audit_ssdl.render_ssdl_sketch (consumer) +| |- src.file_cache.get_curated_view (consumer) +| |- src.tool_presets._write_raw (consumer) +| |- src.file_cache.deep_search (consumer) +| |- src.api_hooks_helpers._has_app_attr (consumer) +| |- src.aggregate.build_screenshots_section (consumer) +| |- src.ai_client._send_gemini_cli (consumer) +| |- src.imgui_scopes.id (consumer) +| |- src.markdown_helper._normalize_list_continuations (consumer) +| |- src.gemini_cli_adapter.__init__ (consumer) +| |- src.app_controller._cb_apply_view_preset (consumer) +| |- src.history.redo (consumer) +| |- src.code_path_audit.compute_result_coverage (consumer) +| |- src.summary_cache.__init__ (consumer) +| |- src.api_hook_client._make_request (consumer) +| |- src.app_controller._handle_refresh_from_project (consumer) +| |- src.gui_2._set_context_files (consumer) +| |- src.theme_2.apply (consumer) +| |- src.app_controller._handle_ask (consumer) +| |- src.log_registry.set_session_start_time (consumer) +| |- src.code_path_audit._resolve_aliases (consumer) +| |- src.ai_client._content_block_to_dict (consumer) +| |- src.project_manager.entry_to_str (consumer) +| |- src.markdown_table._is_table_at (consumer) +| |- src.ai_client._list_gemini_models_result (consumer) +| |- src.code_path_audit.run_audit (consumer) +| |- src.gui_2.render_text_viewer (consumer) +| |- src.mcp_client.get_tree_result (consumer) +| |- src.markdown_helper.render_code (consumer) +| |- src.mcp_client.ts_cpp_get_definition_result (consumer) +| |- src.file_cache.get_cached_tree (consumer) +| |- src.mcp_client.async_dispatch (consumer) +| |- src.app_controller._cb_delete_bias_profile (consumer) +| |- src.mcp_client.py_get_class_summary_result (consumer) +| |- src.code_path_audit.P1_pass (consumer) +| |- src.session_logger.log_api_hook (consumer) +| |- src.code_path_audit_analysis.aggregate_pattern_from_consumers (consumer) +| |- src.theme_models.with_scope (consumer) +| |- src.models.from_dict (consumer) +| |- src.mcp_client.get_file_summary (consumer) +| |- src.imgui_scopes.tab_item (consumer) +| |- src.openai_compatible._classify_openai_compatible_error (consumer) +| |- src.models.from_dict (consumer) +| |- src.app_controller._on_tool_log (consumer) +| |- src.personas.get_persona_scope (consumer) +| |- src.file_cache.update_definition (consumer) +| |- src.app_controller._cb_load_workspace_profile (consumer) +| |- src.code_path_audit.to_dsl_v2 (consumer) +| |- src.api_hook_client.wait_for_event (consumer) +| |- src.summarize._summarise_python (consumer) +| |- src.code_path_audit.compute_decomposition_cost (consumer) +| |- src.app_controller.__getattr__ (consumer) +| |- src.mcp_client.py_get_skeleton_result (consumer) +| |- src.mcp_client.handle_data (consumer) +| |- src.file_cache.get_definition (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.mcp_client._ast_get_signature (consumer) +| |- src.file_cache._get_mtime_safe (consumer) +| |- src.code_path_audit_analysis.analyze_producer_size (consumer) +| |- src.imgui_scopes.table (consumer) +| |- src.mcp_client.get_tree (consumer) +| |- src.code_path_audit.code_path_audit_v2 (consumer) +| |- src.code_path_audit_cross_audit._aggregate_for_fqname (consumer) +| |- src.project_manager.clean_nones (consumer) +| |- src.mcp_client.py_set_signature (consumer) +| |- src.ai_client.set_custom_system_prompt (consumer) +| |- src.ai_client._strip_stale_file_refreshes (consumer) +| |- src.gui_2.__setattr__ (consumer) +| |- src.models._clean_nones (consumer) +| |- src.markdown_helper.detect_language (consumer) +| |- src.mcp_client.fetch_url (consumer) +| |- src.mcp_client.handle_endtag (consumer) +| |- src.performance_monitor._add_to_history (consumer) +| |- src.project_manager.promote_take (consumer) +| |- src.project_manager.save_track_state (consumer) +| |- src.app_controller._init_ai_and_hooks (consumer) +| |- src.mcp_client.py_get_docstring_result (consumer) +| |- src.outline_tool.get_outline (consumer) +| |- src.ai_client._append_comms (consumer) +| |- src.models.parse_history_entries (consumer) +| |- src.models.from_dict (consumer) +| |- src.project_manager.str_to_entry (consumer) +| |- src.mcp_client.set_file_slice_result (consumer) +| |- src.api_hook_client.request_confirmation (consumer) +| |- src.code_path_audit_analysis.compute_real_decomposition_cost (consumer) +| |- src.ai_client._classify_deepseek_error (consumer) +| |- src.app_controller._report_worker_error (consumer) +| |- src.paths.get_conductor_dir (consumer) +| |- src.events.put (consumer) +| |- src.hot_reloader.capture_state (consumer) +| |- src.gui_2.__init__ (consumer) +| |- src.gui_2.render_discussion_entry (consumer) +| |- src.models.from_dict (consumer) +| |- src.code_path_audit.parse_dsl_v2 (consumer) +| |- src.app_controller._handle_ticket_completed (consumer) +| |- src.app_controller._cb_create_track (consumer) +| |- src.mcp_client.py_check_syntax (consumer) +| |- src.mcp_client.edit_file (consumer) +| |- src.app_controller._confirm_and_run (consumer) +| |- src.project_manager.parse_ts (consumer) +| |- src.startup_profiler._log_phase_output (consumer) +| |- src.app_controller._set_mcp_config_json_result (consumer) +| |- src.app_controller.get_api_key (consumer) +| |- src.mcp_client._ast_get_skeleton (consumer) +| |- src.code_path_audit_analysis.estimate_struct_size (consumer) +| |- src.code_path_audit.run_all_cross_audit_reads (consumer) +| |- src.imgui_scopes.popup_modal (consumer) +| |- src.app_controller.mcp_config_json (consumer) +| |- src.app_controller._handle_set_ai_status (consumer) +| |- src.app_controller._handle_mma_stream (consumer) +| |- src.mcp_client._ast_get_code_outline (consumer) +| |- src.vendor_capabilities.get_capabilities (consumer) +| |- src.api_hook_client.set_value (consumer) +| |- src.multi_agent_conductor.kill_worker (consumer) +| |- src.api_hook_client.inject_context (consumer) +| |- src.imgui_scopes.node (consumer) +| |- src.ai_client.ollama_chat (consumer) +| |- src.app_controller.post_api_session (consumer) +| |- src.mcp_client.dispatch (consumer) +| |- src.session_logger.log_tool_output (consumer) +| |- src.app_controller._cb_save_bias_profile (consumer) +| |- src.ai_client.set_provider (consumer) +| |- src.code_path_audit.add_producer (consumer) +| |- src.app_controller._on_performance_alert (consumer) +| |- src.file_cache.get_code_outline (consumer) +| |- src.file_cache.parse (consumer) +| |- src.gui_2._render_ast_inspector_outline_result (consumer) +| |- src.log_registry.__init__ (consumer) +| |- src.rag_engine._read_file_content_result (consumer) +| |- src.app_controller._start_track_logic_result (consumer) +| |- src.models.from_dict (consumer) +| |- src.api_hook_client.__init__ (consumer) +| |- src.hot_reloader.reload (consumer) +| |- src.mcp_client.get_git_diff (consumer) +| |- src.project_manager.migrate_from_legacy_config (consumer) +| |- src.rag_engine.__init__ (consumer) +| |- src.summary_cache.get_summary (consumer) +| |- src.ai_client.send (consumer) +| |- src.file_cache.get_signature (consumer) +| |- src.api_hook_client.push_event (consumer) +| |- src.mcp_client.ts_cpp_get_code_outline (consumer) +| |- src.mcp_client.ts_c_update_definition (consumer) +| |- src.app_controller._handle_refresh_api_metrics (consumer) +| |- src.multi_agent_conductor._push_state (consumer) +| |- src.ai_client._truncate_tool_output (consumer) +| |- src.gui_2.render_tier_stream_panel (consumer) +| |- src.mcp_client._build_tree (consumer) +| |- src.api_hook_client.get_indicator_state (consumer) +| |- src.personas._get_path (consumer) +| |- src.app_controller._on_warmup_complete_for_timeline (consumer) +| |- src.project_manager.get_git_commit (consumer) +| |- src.mcp_client.py_get_signature_result (consumer) +| |- src.project_manager.format_discussion (consumer) +| |- src.app_controller.set_vendor_quota (consumer) +| |- src.mcp_client.py_get_skeleton (consumer) +| |- src.events.on (consumer) +| |- src.mcp_client.py_get_var_declaration (consumer) +| |- src.app_controller._switch_project (consumer) +| |- src.thinking_parser.extract_colon_blocks (consumer) +| |- src.performance_monitor.start_component (consumer) +| |- src.models.from_dict (consumer) +| |- src.mcp_client.py_find_usages_result (consumer) +| |- src.app_controller._load_project_from_path_result (consumer) +| |- src.qwen_adapter.build_dashscope_tools (consumer) +| |- src.ai_client._execute_tool_calls_concurrently (consumer) +| |- src.models.from_dict (consumer) +| |- src.gui_2._save_context_preset_force (consumer) +| |- src.ai_client._repair_deepseek_history (consumer) +| |- src.command_palette._execute (consumer) +| |- src.models.mark_manual_block (consumer) +| |- src.gui_2._set_external_editor_default (consumer) +| |- src.personas.delete_persona (consumer) +| |- src.ai_client._execute_single_tool_call_async (consumer) +| |- src.api_hook_client.wait_for_project_switch (consumer) +| |- src.multi_agent_conductor.parse_json_tickets (consumer) +| |- src.theme_2.render_post_fx (consumer) +| |- src.dag_engine.update_task_status (consumer) +| |- src.app_controller._on_sigint (consumer) +| |- src.ai_client.set_tool_preset (consumer) +| |- src.openai_compatible._send_blocking (consumer) +| |- src.aggregate.find_next_increment (consumer) +| |- src.gui_2.render_heavy_text (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.multi_agent_conductor.clutch_callback (consumer) +| |- src.gui_2.__init__ (consumer) +| |- src.hot_reloader.restore_state (consumer) +| |- src.api_hook_client.get_value (consumer) +| |- src.summarize._summarise_toml (consumer) +| |- src.app_controller._start_track_logic (consumer) +| |- src.app_controller._switch_discussion (consumer) +| |- src.mcp_client._send_request (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.app_controller._handle_right_click (consumer) +| |- src.app_controller._handle_show_patch_modal (consumer) +| |- src.app_controller._offload_entry_payload (consumer) +| |- src.theme_models.load_themes_from_toml (consumer) +| |- src.app_controller._cb_delete_view_preset (consumer) +| |- src.ai_client._invalidate_token_estimate (consumer) +| |- src.app_controller.get_session (consumer) +| |- src.ai_client._send_grok (consumer) +| |- src.mcp_client.get_git_diff_result (consumer) +| |- src.api_hooks.log_message (consumer) +| |- src.theme_2.save_to_config (consumer) +| |- src.warmup._fire_callback (consumer) +| |- src.performance_monitor._get_avg (consumer) +| |- src.mcp_client.ts_cpp_update_definition_result (consumer) +| |- src.app_controller.rag_mcp_tool (consumer) +| |- src.mcp_client.ts_c_get_skeleton_result (consumer) +| |- src.ai_client._send_anthropic (consumer) +| |- src.app_controller._cb_delete_workspace_profile (consumer) +| |- src.gui_2._cb_block_ticket (consumer) +| |- src.mcp_client._resolve_and_check_result (consumer) +| |- src.mcp_client.ts_c_get_definition (consumer) +| |- src.code_path_audit.load_memory_dim_overrides (consumer) +| |- src.gui_2._render_window_if_open (consumer) +| |- src.ai_client._parse_tool_args_result (consumer) +| |- src.mcp_client.ts_c_get_signature (consumer) +| |- src.performance_monitor.end_component (consumer) +| |- src.api_hooks._has_app_attr (consumer) +| |- src.markdown_helper._is_likely_lang_tag (consumer) +| |- src.ai_client._send_deepseek (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.openai_compatible._to_typed_tool_call (consumer) +| |- src.code_path_audit.add_consumer (consumer) +| |- src.ai_client.run_subagent_summarization (consumer) +| |- src.hot_reloader.reload_all (consumer) +| |- src.api_hooks_helpers._set_app_attr (consumer) +| |- src.mcp_client.py_get_definition_result (consumer) +| |- src.gui_2._populate_auto_slices_outline_result (consumer) +| |- src.ai_client._list_minimax_models_result (consumer) +| |- src.mcp_client.list_directory (consumer) +| |- src.multi_agent_conductor.run_worker_lifecycle (consumer) +| |- src.mcp_client.ts_cpp_get_skeleton_result (consumer) +| |- src.models.from_dict (consumer) +| |- src.performance_monitor.__exit__ (consumer) +| |- src.theme_2._get_tm (consumer) +| |- src.synthesis_formatter.format_takes_diff (consumer) +| |- src.openai_compatible.send_openai_compatible (consumer) +| |- src.ai_client._try_warm_sdk_result (consumer) +| |- src.ai_client._set_bias_profile_result (consumer) +| |- src.theme_2._tone_map (consumer) +| |- src.markdown_helper._get_language_id (consumer) +| |- src.fuzzy_anchor.get_context (consumer) +| |- src.gui_2.render_selectable_label (consumer) +| |- src.history.from_dict (consumer) +| |- src.app_controller._handle_mma_respond (consumer) +| |- src.ai_client._trim_minimax_history (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.mcp_client.handle_endtag (consumer) +| |- src.patch_modal.request_patch_approval (consumer) +| |- src.code_path_audit_analysis._field_names_for_aggregate (consumer) +| |- src.code_path_audit_analysis._analyze_function_field_accesses (consumer) +| |- src.summarize._summarise_generic (consumer) +| |- src.code_path_audit.generate_rationale (consumer) +| |- src.summarize.summarise_items (consumer) +| |- src.file_cache.deep_search (consumer) +| |- src.provider_state.get_history (consumer) +| |- src.session_logger.log_cli_call (consumer) +| |- src.log_registry.update_session_metadata (consumer) +| |- src.app_controller._api_post_api_session (consumer) +| |- src.code_path_audit_ssdl.suggest_defusing_technique (consumer) +| |- src.gemini_cli_adapter.count_tokens (consumer) +| |- src.gui_2._cb_unblock_ticket (consumer) +| |- src.theme_models.load_themes_from_dir (consumer) +| |- src.external_editor.get_editor (consumer) +| |- src.ai_client._send_llama (consumer) +| |- src.ai_client._classify_gemini_error (consumer) +| |- src.app_controller._execute_gui_task_result (consumer) +| |- src.gui_2.request_patch_from_tier4_result (consumer) +| |- src.imgui_scopes.popup (consumer) +| |- src.multi_agent_conductor.spawn (consumer) +| |- src.app_controller._handle_ticket_started (consumer) +| |- src.project_manager.load_track_history (consumer) +| |- src.ai_client._get_gemini_history_list (consumer) +| |- src.command_palette._starts_at_word_boundary (consumer) +| |- src.mcp_client.py_find_usages (consumer) +| |- src.multi_agent_conductor.run (consumer) +| |- src.mcp_client.ts_c_update_definition_result (consumer) +| |- src.theme_models.load_theme_file (consumer) +| |- src.app_controller.post_gui (consumer) +| |- src.log_registry.register_session (consumer) +| |- src.aggregate.run (consumer) +| |- src.gui_2.load_context_preset (consumer) +| |- src.mcp_client.py_get_class_summary (consumer) +| |- src.models._save_config_to_disk (consumer) +| |- src.api_hook_client.post_session (consumer) +| |- src.performance_monitor.__init__ (consumer) +| |- src.app_controller._cb_load_track (consumer) +| |- src.warmup._log_canary (consumer) +| |- src.app_controller._cb_save_persona (consumer) +| |- src.app_controller._parse_token_history_first_ts_result (consumer) +| |- src.code_path_audit_cross_audit._file_to_aggregates (consumer) +| |- src.gui_2.current_provider (consumer) +| |- src.dag_engine.approve_task (consumer) +| |- src.api_hooks._serialize_for_api (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_from_items (consumer) +| |- src.code_path_audit_cross_audit.build_cross_audit_findings_for_aggregate (consumer) +| |- src.rag_engine._search_mcp (consumer) +| |- src.models.from_dict (consumer) +| |- src.mcp_client.call_tool (consumer) +| |- src.theme_2.get_syntax_palette_for_theme (consumer) +| |- src.mcp_client.ts_c_get_definition_result (consumer) +| |- src.app_controller.rag_collection_name (consumer) +| |- src.thinking_parser.extract_tags (consumer) +| |- src.api_hook_client.trigger_patch (consumer) +| |- src.app_controller._handle_set_comms_dirty (consumer) +| |- src.multi_agent_conductor.stream_callback (consumer) +| |- src.api_hook_client.post_project (consumer) +| |- src.workspace_manager._get_path (consumer) +| |- src.gui_2._capture_workspace_profile (consumer) +| |- src.gui_2.cb_load_prior_log (consumer) +| |- src.gui_2.request_patch_from_tier4 (consumer) +| |- src.models.from_dict (consumer) +| |- src.app_controller.ai_status (consumer) +| |- src.app_controller._cb_new_project_automated (consumer) +| |- src.mcp_client.ts_cpp_get_skeleton (consumer) +| |- src.ai_client._chunk_text (consumer) +| |- src.app_controller._handle_mma_spawn_approval (consumer) +| |- src.app_controller._handle_bead_updated (consumer) +| |- src.tool_presets.save_preset (consumer) +| |- src.workspace_manager.save_profile (consumer) +| |- src.code_path_audit_analysis.extract_real_optimization_candidates (consumer) +| |- src.imgui_scopes.__init__ (consumer) +| |- src.mcp_client.get_file_summary_result (consumer) +| |- src.mcp_client.ts_cpp_get_definition (consumer) +| |- src.ai_client._run_tier4_patch_generation_result (consumer) +| |- src.code_path_audit_analysis.analyze_consumer_fields (consumer) +| |- src.diff_viewer.apply_patch_to_file (consumer) +| |- src.gui_2.__getattr__ (consumer) +| |- src.multi_agent_conductor._queue_put (consumer) | |- src.ai_client._estimate_message_tokens (consumer) +| |- src.paths._resolve_path (consumer) +| |- src.api_hook_client.select_list_item (consumer) +| |- src.command_palette.get (consumer) +| |- src.code_path_audit.find_enclosing_function (consumer) +| |- src.app_controller._handle_ai_response (consumer) |- access_pattern: whole_struct |- frequency: per_turn -|- result_coverage: 96 producers, 46 consumers -|- type_alias_coverage: 173 sites; 0 typed (0%); 173 untyped (100%) +|- result_coverage: 457 producers, 697 consumers +|- type_alias_coverage: 123 sites; 0 typed (0%); 123 untyped (100%) |- cross_audit_findings: 1 findings -|- decomposition_cost: hold (720 us) +|- decomposition_cost: hold (520 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.dsl index 6863be58..e72915ff 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.dsl +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.dsl @@ -7,29 +7,265 @@ \ === memory_dim === "control" mem-dim -\ === producers (1 items) === +\ === producers (118 items) === + "src.ai_client._extract_dashscope_tool_calls" "src\ai_client.py" 2754 "producer" fn-ref + "src.api_hook_client.get_warmup_wait" "src\api_hook_client.py" 332 "producer" fn-ref + "src.app_controller.wait" "src\app_controller.py" 5205 "producer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "producer" fn-ref + "src.app_controller._pending_mma_spawn" "src\app_controller.py" 2772 "producer" fn-ref + "src.api_hook_client.wait_for_event" "src\api_hook_client.py" 136 "producer" fn-ref + "src.api_hook_client.clear_events" "src\api_hook_client.py" 129 "producer" fn-ref + "src.project_manager.get_all_tracks" "src\project_manager.py" 342 "producer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "producer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "producer" fn-ref + "src.app_controller._api_get_diagnostics" "src\app_controller.py" 202 "producer" fn-ref + "src.app_controller.get_gui_state" "src\app_controller.py" 2829 "producer" fn-ref + "src.app_controller.load_config" "src\app_controller.py" 5142 "producer" fn-ref + "src.api_hook_client.get_warmup_status" "src\api_hook_client.py" 325 "producer" fn-ref + "src.api_hook_client.get_project" "src\api_hook_client.py" 367 "producer" fn-ref + "src.api_hook_client.get_mma_workers" "src\api_hook_client.py" 546 "producer" fn-ref + "src.models.to_dict" "src\models.py" 646 "producer" fn-ref + "src.api_hook_client.reject_patch" "src\api_hook_client.py" 288 "producer" fn-ref + "src.models.to_dict" "src\models.py" 406 "producer" fn-ref + "src.app_controller._api_get_session" "src\app_controller.py" 374 "producer" fn-ref + "src.ai_client._parse_tool_args_result" "src\ai_client.py" 741 "producer" fn-ref + "src.app_controller._api_pending_actions" "src\app_controller.py" 335 "producer" fn-ref + "src.models.to_dict" "src\models.py" 855 "producer" fn-ref + "src.project_manager.load_history" "src\project_manager.py" 209 "producer" fn-ref "src.openai_compatible._to_typed_tool_call" "src\openai_compatible.py" 43 "producer" fn-ref + "src.app_controller.get_context" "src\app_controller.py" 2892 "producer" fn-ref + "src.ai_client._build_chunked_context_blocks" "src\ai_client.py" 1281 "producer" fn-ref + "src.ai_client._get_anthropic_tools" "src\ai_client.py" 664 "producer" fn-ref + "src.api_hook_client.get_gui_state" "src\api_hook_client.py" 165 "producer" fn-ref + "src.models.to_dict" "src\models.py" 938 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1059 "producer" fn-ref + "src.ai_client._get_deepseek_tools" "src\ai_client.py" 1194 "producer" fn-ref + "src.models.parse_history_entries" "src\models.py" 214 "producer" fn-ref + "src.api_hook_client.get_events" "src\api_hook_client.py" 124 "producer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "producer" fn-ref + "src.project_manager.str_to_entry" "src\project_manager.py" 75 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 473 "producer" fn-ref + "src.models.to_dict" "src\models.py" 794 "producer" fn-ref + "src.api_hook_client.get_session" "src\api_hook_client.py" 502 "producer" fn-ref + "src.app_controller.token_stats" "src\app_controller.py" 2898 "producer" fn-ref + "src.api_hook_client.get_io_pool_status" "src\api_hook_client.py" 420 "producer" fn-ref + "src.api_hook_client.trigger_patch" "src\api_hook_client.py" 274 "producer" fn-ref + "src.api_hook_client.get_gui_health" "src\api_hook_client.py" 434 "producer" fn-ref + "src.ai_client.get_gemini_cache_stats" "src\ai_client.py" 1604 "producer" fn-ref + "src.app_controller._api_get_api_project" "src\app_controller.py" 188 "producer" fn-ref + "src.api_hook_client.get_status" "src\api_hook_client.py" 105 "producer" fn-ref + "src.app_controller._api_get_context" "src\app_controller.py" 398 "producer" fn-ref + "src.app_controller._api_token_stats" "src\app_controller.py" 417 "producer" fn-ref + "src.api_hook_client.get_context_state" "src\api_hook_client.py" 491 "producer" fn-ref + "src.api_hook_client.set_value" "src\api_hook_client.py" 212 "producer" fn-ref + "src.app_controller.get_mma_status" "src\app_controller.py" 2835 "producer" fn-ref + "src.api_hook_client.post_gui" "src\api_hook_client.py" 149 "producer" fn-ref + "src.api_hook_client.get_gui_diagnostics" "src\api_hook_client.py" 311 "producer" fn-ref + "src.app_controller._api_get_performance" "src\app_controller.py" 195 "producer" fn-ref + "src.app_controller._api_get_api_session" "src\app_controller.py" 170 "producer" fn-ref + "src.api_hook_client.get_mma_status" "src\api_hook_client.py" 539 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1000 "producer" fn-ref + "src.models.to_dict" "src\models.py" 672 "producer" fn-ref + "src.models.to_dict" "src\models.py" 355 "producer" fn-ref + "src.aggregate.build_file_items" "src\aggregate.py" 158 "producer" fn-ref + "src.api_hook_client.get_startup_timeline" "src\api_hook_client.py" 353 "producer" fn-ref + "src.api_hook_client.get_node_status" "src\api_hook_client.py" 532 "producer" fn-ref + "src.api_hook_client.get_performance" "src\api_hook_client.py" 318 "producer" fn-ref + "src.ai_client._load_credentials" "src\ai_client.py" 282 "producer" fn-ref + "src.app_controller._api_get_gui_state" "src\app_controller.py" 123 "producer" fn-ref + "src.project_manager.default_project" "src\project_manager.py" 123 "producer" fn-ref + "src.api_hook_client.post_session" "src\api_hook_client.py" 117 "producer" fn-ref + "src.app_controller.get_performance" "src\app_controller.py" 2856 "producer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "producer" fn-ref + "src.models.to_dict" "src\models.py" 486 "producer" fn-ref + "src.models.to_dict" "src\models.py" 913 "producer" fn-ref + "src.models.to_dict" "src\models.py" 596 "producer" fn-ref + "src.api_hook_client.push_event" "src\api_hook_client.py" 156 "producer" fn-ref + "src.api_hook_client.get_warmup_canaries" "src\api_hook_client.py" 342 "producer" fn-ref + "src.api_hook_client.drag" "src\api_hook_client.py" 230 "producer" fn-ref + "src.app_controller.pending_actions" "src\app_controller.py" 2874 "producer" fn-ref + "src.ai_client.get_token_stats" "src\ai_client.py" 3185 "producer" fn-ref + "src.models.to_dict" "src\models.py" 886 "producer" fn-ref + "src.app_controller.status" "src\app_controller.py" 2865 "producer" fn-ref + "src.models.to_dict" "src\models.py" 558 "producer" fn-ref + "src.api_hook_client.apply_patch" "src\api_hook_client.py" 281 "producer" fn-ref + "src.models._load_config_from_disk" "src\models.py" 186 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 470 "producer" fn-ref + "src.app_controller._api_get_mma_status" "src\app_controller.py" 144 "producer" fn-ref + "src.api_hook_client.get_patch_status" "src\api_hook_client.py" 295 "producer" fn-ref + "src.app_controller.generate" "src\app_controller.py" 2868 "producer" fn-ref + "src.models.to_dict" "src\models.py" 441 "producer" fn-ref + "src.app_controller.get_api_project" "src\app_controller.py" 2853 "producer" fn-ref + "src.app_controller._api_status" "src\app_controller.py" 209 "producer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1024 "producer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "producer" fn-ref + "src.api_hook_client.wait_for_project_switch" "src\api_hook_client.py" 389 "producer" fn-ref + "src.models.to_dict" "src\models.py" 971 "producer" fn-ref + "src.api_hook_client.click" "src\api_hook_client.py" 223 "producer" fn-ref + "src.ai_client.get_comms_log" "src\ai_client.py" 273 "producer" fn-ref + "src.app_controller._api_generate" "src\app_controller.py" 221 "producer" fn-ref + "src.api_hook_client.select_list_item" "src\api_hook_client.py" 256 "producer" fn-ref + "src.models.to_dict" "src\models.py" 288 "producer" fn-ref + "src.api_hook_client.get_project_switch_status" "src\api_hook_client.py" 374 "producer" fn-ref + "src.models.to_dict" "src\models.py" 737 "producer" fn-ref + "src.project_manager.load_project" "src\project_manager.py" 186 "producer" fn-ref + "src.app_controller.get_session" "src\app_controller.py" 2883 "producer" fn-ref + "src.api_hook_client.get_system_telemetry" "src\api_hook_client.py" 524 "producer" fn-ref + "src.models.to_dict" "src\models.py" 618 "producer" fn-ref + "src.api_hook_client._make_request" "src\api_hook_client.py" 65 "producer" fn-ref + "src.app_controller.get_diagnostics" "src\app_controller.py" 2862 "producer" fn-ref + "src.app_controller.get_session_insights" "src\app_controller.py" 3049 "producer" fn-ref + "src.ai_client._content_block_to_dict" "src\ai_client.py" 1200 "producer" fn-ref + "src.api_hook_client.select_tab" "src\api_hook_client.py" 263 "producer" fn-ref + "src.app_controller._pending_mma_approval" "src\app_controller.py" 2776 "producer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "producer" fn-ref + "src.models.to_dict" "src\models.py" 701 "producer" fn-ref + "src.api_hook_client.right_click" "src\api_hook_client.py" 237 "producer" fn-ref + "src.app_controller.get_api_session" "src\app_controller.py" 2847 "producer" fn-ref + "src.project_manager.default_discussion" "src\project_manager.py" 117 "producer" fn-ref + "src.ai_client._send_cli_round_result" "src\ai_client.py" 1746 "producer" fn-ref + "src.api_hook_client.get_financial_metrics" "src\api_hook_client.py" 520 "producer" fn-ref -\ === consumers (1 items) === +\ === consumers (67 items) === + "src.ai_client._invalidate_token_estimate" "src\ai_client.py" 1240 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 920 "consumer" fn-ref + "src.aggregate.build_markdown_from_items" "src\aggregate.py" 348 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 603 "consumer" fn-ref + "src.ai_client._create_gemini_cache_result" "src\ai_client.py" 1706 "consumer" fn-ref + "src.ai_client._send_grok" "src\ai_client.py" 2530 "consumer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 506 "consumer" fn-ref + "src.ai_client._send_gemini_cli" "src\ai_client.py" 2019 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 814 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 893 "consumer" fn-ref + "src.ai_client._send_gemini" "src\ai_client.py" 1802 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 378 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1038 "consumer" fn-ref + "src.ai_client._send_anthropic" "src\ai_client.py" 1405 "consumer" fn-ref + "src.project_manager.save_project" "src\project_manager.py" 229 "consumer" fn-ref + "src.ai_client._trim_anthropic_history" "src\ai_client.py" 1353 "consumer" fn-ref + "src.ai_client._send_llama" "src\ai_client.py" 2858 "consumer" fn-ref + "src.aggregate.build_tier3_context" "src\aggregate.py" 382 "consumer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "consumer" fn-ref + "src.project_manager.format_discussion" "src\project_manager.py" 69 "consumer" fn-ref + "src.project_manager.entry_to_str" "src\project_manager.py" 49 "consumer" fn-ref + "src.ai_client._repair_minimax_history" "src\ai_client.py" 2462 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1007 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 747 "consumer" fn-ref + "src.ai_client._strip_stale_file_refreshes" "src\ai_client.py" 1253 "consumer" fn-ref + "src.ai_client._send_deepseek" "src\ai_client.py" 2165 "consumer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 683 "consumer" fn-ref + "src.aggregate.build_markdown_no_history" "src\aggregate.py" 366 "consumer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "consumer" fn-ref + "src.ai_client._send_llama_native" "src\ai_client.py" 2958 "consumer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "consumer" fn-ref + "src.ai_client._send_qwen" "src\ai_client.py" 2773 "consumer" fn-ref + "src.app_controller._on_comms_entry" "src\app_controller.py" 4282 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 712 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 866 "consumer" fn-ref + "src.ai_client._repair_deepseek_history" "src\ai_client.py" 2138 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 454 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 575 "consumer" fn-ref + "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 945 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 630 "consumer" fn-ref "src.openai_compatible._to_dict_tool_call" "src\openai_compatible.py" 54 "consumer" fn-ref + "src.ai_client._repair_anthropic_history" "src\ai_client.py" 1381 "consumer" fn-ref + "src.ai_client._strip_cache_controls" "src\ai_client.py" 1291 "consumer" fn-ref + "src.aggregate.run" "src\aggregate.py" 479 "consumer" fn-ref + "src.models._save_config_to_disk" "src\models.py" 199 "consumer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "consumer" fn-ref + "src.app_controller._start_track_logic_result" "src\app_controller.py" 4728 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 949 "consumer" fn-ref + "src.ai_client._estimate_prompt_tokens" "src\ai_client.py" 1243 "consumer" fn-ref + "src.ai_client._append_comms" "src\ai_client.py" 257 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 982 "consumer" fn-ref + "src.ai_client._estimate_message_tokens" "src\ai_client.py" 1218 "consumer" fn-ref + "src.ai_client._add_history_cache_breakpoint" "src\ai_client.py" 1299 "consumer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 295 "consumer" fn-ref + "src.aggregate._build_files_section_from_items" "src\aggregate.py" 300 "consumer" fn-ref + "src.ai_client._trim_minimax_history" "src\ai_client.py" 2482 "consumer" fn-ref + "src.app_controller._refresh_api_metrics" "src\app_controller.py" 3074 "consumer" fn-ref + "src.app_controller._start_track_logic" "src\app_controller.py" 4721 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 416 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 656 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1072 "consumer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "consumer" fn-ref + "src.ai_client._send_minimax" "src\ai_client.py" 2616 "consumer" fn-ref + "src.ai_client.send" "src\ai_client.py" 3208 "consumer" fn-ref \ === access_pattern === "whole_struct" access-pattern -\ === access_pattern_evidence (1 items) === +\ === access_pattern_evidence (50 items) === + "src.ai_client._invalidate_token_estimate" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.aggregate.build_markdown_from_items" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._create_gemini_cache_result" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_grok" "whole_struct" 0 "low" ap-evidence + "src.ai_client._strip_private_keys" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_gemini_cli" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_gemini" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_anthropic" "whole_struct" 0 "low" ap-evidence + "src.project_manager.save_project" "mixed" 2 "high" ap-evidence + "src.ai_client._trim_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._send_llama" "whole_struct" 0 "low" ap-evidence + "src.aggregate.build_tier3_context" "whole_struct" 0 "low" ap-evidence + "src.app_controller._offload_entry_payload" "whole_struct" 0 "low" ap-evidence + "src.project_manager.format_discussion" "whole_struct" 0 "low" ap-evidence + "src.project_manager.entry_to_str" "whole_struct" 1 "high" ap-evidence + "src.ai_client._repair_minimax_history" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._strip_stale_file_refreshes" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_deepseek" "whole_struct" 0 "low" ap-evidence + "src.ai_client._add_bleed_derived" "field_by_field" 9 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.aggregate.build_markdown_no_history" "whole_struct" 0 "low" ap-evidence + "src.project_manager.flat_config" "whole_struct" 1 "high" ap-evidence + "src.ai_client._send_llama_native" "whole_struct" 0 "low" ap-evidence + "src.ai_client.ollama_chat" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_qwen" "whole_struct" 0 "low" ap-evidence + "src.app_controller._on_comms_entry" "field_by_field" 10 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._repair_deepseek_history" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._execute_single_tool_call_async" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence "src.openai_compatible._to_dict_tool_call" "whole_struct" 1 "high" ap-evidence + "src.ai_client._repair_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._strip_cache_controls" "whole_struct" 0 "low" ap-evidence + "src.aggregate.run" "field_by_field" 3 "high" ap-evidence + "src.models._save_config_to_disk" "whole_struct" 0 "low" ap-evidence + "src.ai_client._dashscope_call" "whole_struct" 0 "low" ap-evidence + "src.app_controller._start_track_logic_result" "field_by_field" 17 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence \ === frequency === "per_turn" frequency -\ === frequency_evidence (1 items) === - "src.openai_compatible._to_typed_tool_call" "per_turn" "static_analysis" "producer from src\openai_compatible.py" freq-evidence +\ === frequency_evidence (5 items) === + "src.ai_client._extract_dashscope_tool_calls" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.api_hook_client.get_warmup_wait" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence + "src.app_controller.wait" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence + "src.ai_client._dashscope_call" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.app_controller._pending_mma_spawn" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence \ === result_coverage === - 1 1 1 0 result-coverage + 97 97 47 0 result-coverage \ === type_alias_coverage === - 1 0 1 type-alias-coverage + 136 0 136 type-alias-coverage \ === cross_audit_findings === 5 cross-audit-findings diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.md b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.md index 68cd3dba..99a00069 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.md +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.md @@ -6,89 +6,428 @@ ## Pipeline summary -- Producers: 1 -- Consumers: 1 -- Distinct producer fqnames: 1 -- Distinct consumer fqnames: 1 +- Producers: 118 +- Consumers: 67 +- Distinct producer fqnames: 97 +- Distinct consumer fqnames: 47 - Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn - Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (1) +## Producers (118) + +### `src\aggregate.py` (1 producer) + +- `src.aggregate.build_file_items` (line 158) + +### `src\ai_client.py` (16 producers) + +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) + +### `src\api_hook_client.py` (39 producers) + +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\app_controller.py` (30 producers) + +- `src.app_controller.wait` (line 5205) +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.status` (line 2865) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_status` (line 209) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.get_api_session` (line 2847) + +### `src\models.py` (23 producers) + +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 938) +- `src.models.to_dict` (line 1059) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 1000) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 618) +- `src.models.to_dict` (line 701) ### `src\openai_compatible.py` (1 producer) - `src.openai_compatible._to_typed_tool_call` (line 43) -## Consumers (1) +### `src\project_manager.py` (8 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) + +## Consumers (67) + +### `src\aggregate.py` (5 consumers) + +- `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.run` (line 479) +- `src.aggregate._build_files_section_from_items` (line 300) + +### `src\ai_client.py` (29 consumers) + +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._estimate_message_tokens` (line 1218) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.send` (line 3208) + +### `src\app_controller.py` (5 consumers) + +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._on_comms_entry` (line 4282) +- `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._start_track_logic` (line 4721) + +### `src\models.py` (22 consumers) + +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 506) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 378) +- `src.models.from_dict` (line 1038) +- `src.models.from_dict` (line 1007) +- `src.models.from_dict` (line 747) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.from_dict` (line 866) +- `src.models.from_dict` (line 454) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 630) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 949) +- `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 1072) ### `src\openai_compatible.py` (1 consumer) - `src.openai_compatible._to_dict_tool_call` (line 54) +### `src\project_manager.py` (5 consumers) + +- `src.project_manager.save_project` (line 229) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.migrate_from_legacy_config` (line 253) + ## Field access matrix -| consumer | to_dict | -|---|---| -| `_to_dict_tool_call` | 1 | +| consumer | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _token_history | _topological_sort_tickets_result | active_discussion | active_project_path | active_project_root | ai_status | append | config | content | context_files | discussion | encode | engines | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | 1 | 1 | 1 | . | . | 4 | 4 | 1 | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_to_dict_tool_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | 2 | 2 | . | . | . | 1 | 1 | 1 | 1 | 4 | . | 1 | . | 1 | . | . | 1 | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | + +_... 24 more fields_ ## Access pattern **Dominant pattern:** whole_struct -**Evidence count:** 1 +**Evidence count:** 50 **Per-function pattern distribution:** -- `whole_struct`: 1 functions (100%) +- `whole_struct`: 28 functions (56%) +- `mixed`: 18 functions (36%) +- `field_by_field`: 4 functions (8%) ## SSDL Sketch for `ToolCall` ``` [Q:ToolCall entry-point] -> [Q:PCG lookup] - -> [1: _to_dict_tool_call] [B:check] (branches=0) + -> [1: _invalidate_token_estimate] [B:check] (branches=0) + -> [2: from_dict] [B:check] (branches=0) + -> [3: build_markdown_from_items] [B:check] (branches=9) + -> [4: from_dict] [B:check] (branches=0) + -> [5: _create_gemini_cache_result] [B:check] (branches=3) + -> [6: _send_grok] [B:check] (branches=14) + -> [7: _strip_private_keys] [B:check] (branches=0) + -> [8: from_dict] [B:check] (branches=0) + -> [9: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [10: from_dict] [B:check] (branches=0) + -> [11: from_dict] [B:check] (branches=0) + -> [12: _send_gemini] [B:is None?] (branches=75) [N:safe] + -> [13: from_dict] [B:check] (branches=0) + -> [14: from_dict] [B:check] (branches=0) + -> [15: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [16: save_project] [B:is None?] (branches=7) [N:safe] + -> [17: _trim_anthropic_history] [B:check] (branches=13) + -> [18: _send_llama] [B:check] (branches=13) + -> [19: build_tier3_context] [B:check] (branches=50) + -> [20: _offload_entry_payload] [B:check] (branches=10) + -> [21: format_discussion] [B:check] (branches=0) + -> [22: entry_to_str] [B:check] (branches=3) + -> [23: _repair_minimax_history] [B:check] (branches=10) + -> [24: from_dict] [B:check] (branches=0) + -> [25: from_dict] [B:check] (branches=0) + -> [26: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [27: _send_deepseek] [B:check] (branches=71) + -> [28: _add_bleed_derived] [B:check] (branches=0) + -> [29: from_dict] [B:check] (branches=0) + -> [30: build_markdown_no_history] [B:check] (branches=0) + -> [31: flat_config] [B:check] (branches=2) + -> [32: _send_llama_native] [B:check] (branches=12) + -> [33: ollama_chat] [B:check] (branches=3) + -> [34: _send_qwen] [B:check] (branches=9) + -> [35: _on_comms_entry] [B:check] (branches=32) + -> [36: from_dict] [B:check] (branches=0) + -> [37: from_dict] [B:check] (branches=0) + -> [38: _repair_deepseek_history] [B:check] (branches=6) + -> [39: from_dict] [B:check] (branches=0) + -> [40: from_dict] [B:check] (branches=0) + -> [41: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [42: from_dict] [B:check] (branches=0) + -> [43: _to_dict_tool_call] [B:check] (branches=0) + -> [44: _repair_anthropic_history] [B:check] (branches=6) + -> [45: _strip_cache_controls] [B:check] (branches=4) + -> [46: run] [B:check] (branches=1) + -> [47: _save_config_to_disk] [B:check] (branches=1) + -> [48: _dashscope_call] [B:check] (branches=5) + -> [49: _start_track_logic_result] [B:check] (branches=10) + -> [50: from_dict] [B:check] (branches=0) + -> [51: _estimate_prompt_tokens] [B:check] (branches=2) + -> [52: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [53: from_dict] [B:check] (branches=0) + -> [54: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [55: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [56: _pre_dispatch] [B:check] (branches=8) + -> [57: from_dict] [B:check] (branches=0) + -> [58: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [59: _trim_minimax_history] [B:check] (branches=8) + -> [60: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [61: _start_track_logic] [B:check] (branches=1) + -> [62: from_dict] [B:check] (branches=0) + -> [63: from_dict] [B:check] (branches=0) + -> [64: from_dict] [B:check] (branches=0) + -> [65: migrate_from_legacy_config] [B:check] (branches=2) + -> [66: _send_minimax] [B:check] (branches=11) + -> [67: send] [B:check] (branches=19) -> [T:done] ``` -**Effective codepaths:** 1 (sum of 2^branches across 1 consumers) -**Total branch points:** 0 -**Nil-check functions:** 0 +**Effective codepaths:** 40140116231395706750391 (sum of 2^branches across 67 consumers) +**Total branch points:** 541 +**Nil-check functions:** 9 **Defusing opportunities:** -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `toolcall_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 1 field-check branches to 1 cache lookup. - - Effective codepaths: 1 -> 1 +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 40140116231395706750391 -> 40140116231395706750373 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `toolcall_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 136 field-check branches to 1 cache lookup. + - Effective codepaths: 40140116231395706750391 -> 136 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 40140116231395706750391 -> 67 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 1 +**Evidence count:** 5 **Per-function frequency distribution:** -- `per_turn`: 1 functions +- `per_turn`: 5 functions ## Result coverage -**Summary:** 1 producers, 1 consumers +**Summary:** 97 producers, 47 consumers | metric | value | |---|---| -| total producers | 1 | -| result producers | 1 | -| total consumers | 1 | +| total producers | 97 | +| result producers | 97 | +| total consumers | 47 | | result consumers | 0 | ## Type alias coverage -**Summary:** 1 sites; 0 typed (0%); 1 untyped (100%) +**Summary:** 136 sites; 0 typed (0%); 136 untyped (100%) | metric | value | |---|---| -| total field-access sites | 1 | +| total field-access sites | 136 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 1 | +| untyped sites (wildcard) | 136 | ## Cross-audit findings @@ -108,7 +447,50 @@ _(no cross-audit findings mapped to this aggregate)_ | field | access count | access pattern | |---|---|---| +| `content` | 16 | hot | +| `marker` | 16 | hot | +| `get` | 7 | hot | +| `append` | 3 | hot | +| `pop` | 2 | used | +| `files` | 2 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `estimated_prompt_tokens` | 1 | used | +| `max_prompt_tokens` | 1 | used | +| `utilization_pct` | 1 | used | +| `headroom` | 1 | used | +| `would_trim` | 1 | used | +| `sys_tokens` | 1 | used | +| `tool_tokens` | 1 | used | +| `history_tokens` | 1 | used | +| `local_ts` | 1 | used | +| `_offload_entry_payload` | 1 | used | +| `ui_auto_add_history` | 1 | used | +| `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `items` | 1 | used | | `to_dict` | 1 | used | +| `output` | 1 | used | +| `ai_status` | 1 | used | +| `context_files` | 1 | used | +| `_pending_gui_tasks_lock` | 1 | used | +| `_topological_sort_tickets_result` | 1 | used | +| `active_project_root` | 1 | used | +| `event_queue` | 1 | used | +| `engines` | 1 | used | +| `project` | 1 | used | +| `active_discussion` | 1 | used | +| `submit_io` | 1 | used | +| `tracks` | 1 | used | +| `config` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_pending_gui_tasks` | 1 | used | +| `mma_step_mode` | 1 | used | +| `active_project_path` | 1 | used | ## Optimization candidates @@ -124,10 +506,63 @@ ToolCall: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, | function | pattern | field_accesses | confidence | |---|---|---|---| +| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | +| `src.ai_client._send_grok` | `whole_struct` | | low | +| `src.ai_client._strip_private_keys` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_anthropic` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | +| `src.ai_client._send_llama` | `whole_struct` | | low | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | +| `src.ai_client._send_deepseek` | `whole_struct` | | low | +| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._send_qwen` | `whole_struct` | | low | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | | `src.openai_compatible._to_dict_tool_call` | `whole_struct` | `to_dict`=1 | high | +| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | +| `src.models._save_config_to_disk` | `whole_struct` | | low | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | ### Frequency evidence | function | frequency | source | note | |---|---|---|---| -| `src.openai_compatible._to_typed_tool_call` | `per_turn` | `static_analysis` | producer from src\openai_compatible.py | +| `src.ai_client._extract_dashscope_tool_calls` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller.wait` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.ai_client._dashscope_call` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.tree b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.tree index c569c7a4..93a5a5ad 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.tree +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.tree @@ -1,14 +1,197 @@ Metadata: ToolCall |- kind: typealias |- memory_dim: control -|- producers: [1] +|- producers: [118] +| |- src.ai_client._extract_dashscope_tool_calls (producer) +| |- src.api_hook_client.get_warmup_wait (producer) +| |- src.app_controller.wait (producer) +| |- src.ai_client._dashscope_call (producer) +| |- src.app_controller._pending_mma_spawn (producer) +| |- src.api_hook_client.wait_for_event (producer) +| |- src.api_hook_client.clear_events (producer) +| |- src.project_manager.get_all_tracks (producer) +| |- src.app_controller._offload_entry_payload (producer) +| |- src.ai_client._strip_private_keys (producer) +| |- src.app_controller._api_get_diagnostics (producer) +| |- src.app_controller.get_gui_state (producer) +| |- src.app_controller.load_config (producer) +| |- src.api_hook_client.get_warmup_status (producer) +| |- src.api_hook_client.get_project (producer) +| |- src.api_hook_client.get_mma_workers (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.reject_patch (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller._api_get_session (producer) +| |- src.ai_client._parse_tool_args_result (producer) +| |- src.app_controller._api_pending_actions (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.load_history (producer) | |- src.openai_compatible._to_typed_tool_call (producer) -|- consumers: [1] +| |- src.app_controller.get_context (producer) +| |- src.ai_client._build_chunked_context_blocks (producer) +| |- src.ai_client._get_anthropic_tools (producer) +| |- src.api_hook_client.get_gui_state (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client._get_deepseek_tools (producer) +| |- src.models.parse_history_entries (producer) +| |- src.api_hook_client.get_events (producer) +| |- src.ai_client._pre_dispatch (producer) +| |- src.project_manager.str_to_entry (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_session (producer) +| |- src.app_controller.token_stats (producer) +| |- src.api_hook_client.get_io_pool_status (producer) +| |- src.api_hook_client.trigger_patch (producer) +| |- src.api_hook_client.get_gui_health (producer) +| |- src.ai_client.get_gemini_cache_stats (producer) +| |- src.app_controller._api_get_api_project (producer) +| |- src.api_hook_client.get_status (producer) +| |- src.app_controller._api_get_context (producer) +| |- src.app_controller._api_token_stats (producer) +| |- src.api_hook_client.get_context_state (producer) +| |- src.api_hook_client.set_value (producer) +| |- src.app_controller.get_mma_status (producer) +| |- src.api_hook_client.post_gui (producer) +| |- src.api_hook_client.get_gui_diagnostics (producer) +| |- src.app_controller._api_get_performance (producer) +| |- src.app_controller._api_get_api_session (producer) +| |- src.api_hook_client.get_mma_status (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.aggregate.build_file_items (producer) +| |- src.api_hook_client.get_startup_timeline (producer) +| |- src.api_hook_client.get_node_status (producer) +| |- src.api_hook_client.get_performance (producer) +| |- src.ai_client._load_credentials (producer) +| |- src.app_controller._api_get_gui_state (producer) +| |- src.project_manager.default_project (producer) +| |- src.api_hook_client.post_session (producer) +| |- src.app_controller.get_performance (producer) +| |- src.project_manager.migrate_from_legacy_config (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.push_event (producer) +| |- src.api_hook_client.get_warmup_canaries (producer) +| |- src.api_hook_client.drag (producer) +| |- src.app_controller.pending_actions (producer) +| |- src.ai_client.get_token_stats (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.status (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.apply_patch (producer) +| |- src.models._load_config_from_disk (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.app_controller._api_get_mma_status (producer) +| |- src.api_hook_client.get_patch_status (producer) +| |- src.app_controller.generate (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.get_api_project (producer) +| |- src.app_controller._api_status (producer) +| |- src.project_manager.flat_config (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client.ollama_chat (producer) +| |- src.api_hook_client.wait_for_project_switch (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.click (producer) +| |- src.ai_client.get_comms_log (producer) +| |- src.app_controller._api_generate (producer) +| |- src.api_hook_client.select_list_item (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_project_switch_status (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.load_project (producer) +| |- src.app_controller.get_session (producer) +| |- src.api_hook_client.get_system_telemetry (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client._make_request (producer) +| |- src.app_controller.get_diagnostics (producer) +| |- src.app_controller.get_session_insights (producer) +| |- src.ai_client._content_block_to_dict (producer) +| |- src.api_hook_client.select_tab (producer) +| |- src.app_controller._pending_mma_approval (producer) +| |- src.ai_client._add_bleed_derived (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.right_click (producer) +| |- src.app_controller.get_api_session (producer) +| |- src.project_manager.default_discussion (producer) +| |- src.ai_client._send_cli_round_result (producer) +| |- src.api_hook_client.get_financial_metrics (producer) +|- consumers: [67] +| |- src.ai_client._invalidate_token_estimate (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_from_items (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._create_gemini_cache_result (consumer) +| |- src.ai_client._send_grok (consumer) +| |- src.ai_client._strip_private_keys (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_gemini_cli (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_gemini (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_anthropic (consumer) +| |- src.project_manager.save_project (consumer) +| |- src.ai_client._trim_anthropic_history (consumer) +| |- src.ai_client._send_llama (consumer) +| |- src.aggregate.build_tier3_context (consumer) +| |- src.app_controller._offload_entry_payload (consumer) +| |- src.project_manager.format_discussion (consumer) +| |- src.project_manager.entry_to_str (consumer) +| |- src.ai_client._repair_minimax_history (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._strip_stale_file_refreshes (consumer) +| |- src.ai_client._send_deepseek (consumer) +| |- src.ai_client._add_bleed_derived (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_no_history (consumer) +| |- src.project_manager.flat_config (consumer) +| |- src.ai_client._send_llama_native (consumer) +| |- src.ai_client.ollama_chat (consumer) +| |- src.ai_client._send_qwen (consumer) +| |- src.app_controller._on_comms_entry (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._repair_deepseek_history (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._execute_single_tool_call_async (consumer) +| |- src.models.from_dict (consumer) | |- src.openai_compatible._to_dict_tool_call (consumer) +| |- src.ai_client._repair_anthropic_history (consumer) +| |- src.ai_client._strip_cache_controls (consumer) +| |- src.aggregate.run (consumer) +| |- src.models._save_config_to_disk (consumer) +| |- src.ai_client._dashscope_call (consumer) +| |- src.app_controller._start_track_logic_result (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._estimate_prompt_tokens (consumer) +| |- src.ai_client._append_comms (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._estimate_message_tokens (consumer) +| |- src.ai_client._add_history_cache_breakpoint (consumer) +| |- src.ai_client._pre_dispatch (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate._build_files_section_from_items (consumer) +| |- src.ai_client._trim_minimax_history (consumer) +| |- src.app_controller._refresh_api_metrics (consumer) +| |- src.app_controller._start_track_logic (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.project_manager.migrate_from_legacy_config (consumer) +| |- src.ai_client._send_minimax (consumer) +| |- src.ai_client.send (consumer) |- access_pattern: whole_struct |- frequency: per_turn -|- result_coverage: 1 producers, 1 consumers -|- type_alias_coverage: 1 sites; 0 typed (0%); 1 untyped (100%) +|- result_coverage: 97 producers, 47 consumers +|- type_alias_coverage: 136 sites; 0 typed (0%); 136 untyped (100%) |- cross_audit_findings: 0 findings |- decomposition_cost: hold (470 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.dsl index 57617218..01b7ca00 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.dsl +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.dsl @@ -7,36 +7,272 @@ \ === memory_dim === "control" mem-dim -\ === producers (2 items) === - "src.ai_client._build_anthropic_tools" "src\ai_client.py" 623 "producer" fn-ref +\ === producers (119 items) === + "src.ai_client._extract_dashscope_tool_calls" "src\ai_client.py" 2754 "producer" fn-ref + "src.api_hook_client.get_warmup_wait" "src\api_hook_client.py" 332 "producer" fn-ref + "src.app_controller.wait" "src\app_controller.py" 5205 "producer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "producer" fn-ref + "src.app_controller._pending_mma_spawn" "src\app_controller.py" 2772 "producer" fn-ref + "src.api_hook_client.wait_for_event" "src\api_hook_client.py" 136 "producer" fn-ref + "src.api_hook_client.clear_events" "src\api_hook_client.py" 129 "producer" fn-ref + "src.project_manager.get_all_tracks" "src\project_manager.py" 342 "producer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "producer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "producer" fn-ref + "src.app_controller._api_get_diagnostics" "src\app_controller.py" 202 "producer" fn-ref + "src.app_controller.get_gui_state" "src\app_controller.py" 2829 "producer" fn-ref + "src.app_controller.load_config" "src\app_controller.py" 5142 "producer" fn-ref + "src.api_hook_client.get_warmup_status" "src\api_hook_client.py" 325 "producer" fn-ref + "src.api_hook_client.get_project" "src\api_hook_client.py" 367 "producer" fn-ref "src.ai_client._build_deepseek_tools" "src\ai_client.py" 1148 "producer" fn-ref + "src.api_hook_client.get_mma_workers" "src\api_hook_client.py" 546 "producer" fn-ref + "src.models.to_dict" "src\models.py" 646 "producer" fn-ref + "src.api_hook_client.reject_patch" "src\api_hook_client.py" 288 "producer" fn-ref + "src.models.to_dict" "src\models.py" 406 "producer" fn-ref + "src.app_controller._api_get_session" "src\app_controller.py" 374 "producer" fn-ref + "src.ai_client._parse_tool_args_result" "src\ai_client.py" 741 "producer" fn-ref + "src.app_controller._api_pending_actions" "src\app_controller.py" 335 "producer" fn-ref + "src.models.to_dict" "src\models.py" 855 "producer" fn-ref + "src.project_manager.load_history" "src\project_manager.py" 209 "producer" fn-ref + "src.app_controller.get_context" "src\app_controller.py" 2892 "producer" fn-ref + "src.ai_client._build_chunked_context_blocks" "src\ai_client.py" 1281 "producer" fn-ref + "src.ai_client._get_anthropic_tools" "src\ai_client.py" 664 "producer" fn-ref + "src.api_hook_client.get_gui_state" "src\api_hook_client.py" 165 "producer" fn-ref + "src.models.to_dict" "src\models.py" 938 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1059 "producer" fn-ref + "src.ai_client._get_deepseek_tools" "src\ai_client.py" 1194 "producer" fn-ref + "src.models.parse_history_entries" "src\models.py" 214 "producer" fn-ref + "src.api_hook_client.get_events" "src\api_hook_client.py" 124 "producer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "producer" fn-ref + "src.project_manager.str_to_entry" "src\project_manager.py" 75 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 473 "producer" fn-ref + "src.models.to_dict" "src\models.py" 794 "producer" fn-ref + "src.api_hook_client.get_session" "src\api_hook_client.py" 502 "producer" fn-ref + "src.app_controller.token_stats" "src\app_controller.py" 2898 "producer" fn-ref + "src.api_hook_client.get_io_pool_status" "src\api_hook_client.py" 420 "producer" fn-ref + "src.api_hook_client.trigger_patch" "src\api_hook_client.py" 274 "producer" fn-ref + "src.api_hook_client.get_gui_health" "src\api_hook_client.py" 434 "producer" fn-ref + "src.ai_client.get_gemini_cache_stats" "src\ai_client.py" 1604 "producer" fn-ref + "src.app_controller._api_get_api_project" "src\app_controller.py" 188 "producer" fn-ref + "src.api_hook_client.get_status" "src\api_hook_client.py" 105 "producer" fn-ref + "src.app_controller._api_get_context" "src\app_controller.py" 398 "producer" fn-ref + "src.app_controller._api_token_stats" "src\app_controller.py" 417 "producer" fn-ref + "src.api_hook_client.get_context_state" "src\api_hook_client.py" 491 "producer" fn-ref + "src.api_hook_client.set_value" "src\api_hook_client.py" 212 "producer" fn-ref + "src.app_controller.get_mma_status" "src\app_controller.py" 2835 "producer" fn-ref + "src.api_hook_client.post_gui" "src\api_hook_client.py" 149 "producer" fn-ref + "src.api_hook_client.get_gui_diagnostics" "src\api_hook_client.py" 311 "producer" fn-ref + "src.app_controller._api_get_performance" "src\app_controller.py" 195 "producer" fn-ref + "src.app_controller._api_get_api_session" "src\app_controller.py" 170 "producer" fn-ref + "src.api_hook_client.get_mma_status" "src\api_hook_client.py" 539 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1000 "producer" fn-ref + "src.models.to_dict" "src\models.py" 672 "producer" fn-ref + "src.models.to_dict" "src\models.py" 355 "producer" fn-ref + "src.aggregate.build_file_items" "src\aggregate.py" 158 "producer" fn-ref + "src.api_hook_client.get_startup_timeline" "src\api_hook_client.py" 353 "producer" fn-ref + "src.api_hook_client.get_node_status" "src\api_hook_client.py" 532 "producer" fn-ref + "src.api_hook_client.get_performance" "src\api_hook_client.py" 318 "producer" fn-ref + "src.ai_client._load_credentials" "src\ai_client.py" 282 "producer" fn-ref + "src.app_controller._api_get_gui_state" "src\app_controller.py" 123 "producer" fn-ref + "src.project_manager.default_project" "src\project_manager.py" 123 "producer" fn-ref + "src.api_hook_client.post_session" "src\api_hook_client.py" 117 "producer" fn-ref + "src.app_controller.get_performance" "src\app_controller.py" 2856 "producer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "producer" fn-ref + "src.models.to_dict" "src\models.py" 486 "producer" fn-ref + "src.models.to_dict" "src\models.py" 913 "producer" fn-ref + "src.models.to_dict" "src\models.py" 596 "producer" fn-ref + "src.api_hook_client.push_event" "src\api_hook_client.py" 156 "producer" fn-ref + "src.api_hook_client.get_warmup_canaries" "src\api_hook_client.py" 342 "producer" fn-ref + "src.api_hook_client.drag" "src\api_hook_client.py" 230 "producer" fn-ref + "src.app_controller.pending_actions" "src\app_controller.py" 2874 "producer" fn-ref + "src.ai_client.get_token_stats" "src\ai_client.py" 3185 "producer" fn-ref + "src.models.to_dict" "src\models.py" 886 "producer" fn-ref + "src.app_controller.status" "src\app_controller.py" 2865 "producer" fn-ref + "src.models.to_dict" "src\models.py" 558 "producer" fn-ref + "src.api_hook_client.apply_patch" "src\api_hook_client.py" 281 "producer" fn-ref + "src.models._load_config_from_disk" "src\models.py" 186 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 470 "producer" fn-ref + "src.app_controller._api_get_mma_status" "src\app_controller.py" 144 "producer" fn-ref + "src.api_hook_client.get_patch_status" "src\api_hook_client.py" 295 "producer" fn-ref + "src.app_controller.generate" "src\app_controller.py" 2868 "producer" fn-ref + "src.models.to_dict" "src\models.py" 441 "producer" fn-ref + "src.app_controller.get_api_project" "src\app_controller.py" 2853 "producer" fn-ref + "src.app_controller._api_status" "src\app_controller.py" 209 "producer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "producer" fn-ref + "src.models.to_dict" "src\models.py" 1024 "producer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "producer" fn-ref + "src.api_hook_client.wait_for_project_switch" "src\api_hook_client.py" 389 "producer" fn-ref + "src.ai_client._build_anthropic_tools" "src\ai_client.py" 623 "producer" fn-ref + "src.models.to_dict" "src\models.py" 971 "producer" fn-ref + "src.api_hook_client.click" "src\api_hook_client.py" 223 "producer" fn-ref + "src.ai_client.get_comms_log" "src\ai_client.py" 273 "producer" fn-ref + "src.app_controller._api_generate" "src\app_controller.py" 221 "producer" fn-ref + "src.api_hook_client.select_list_item" "src\api_hook_client.py" 256 "producer" fn-ref + "src.models.to_dict" "src\models.py" 288 "producer" fn-ref + "src.api_hook_client.get_project_switch_status" "src\api_hook_client.py" 374 "producer" fn-ref + "src.models.to_dict" "src\models.py" 737 "producer" fn-ref + "src.project_manager.load_project" "src\project_manager.py" 186 "producer" fn-ref + "src.app_controller.get_session" "src\app_controller.py" 2883 "producer" fn-ref + "src.api_hook_client.get_system_telemetry" "src\api_hook_client.py" 524 "producer" fn-ref + "src.models.to_dict" "src\models.py" 618 "producer" fn-ref + "src.api_hook_client._make_request" "src\api_hook_client.py" 65 "producer" fn-ref + "src.app_controller.get_diagnostics" "src\app_controller.py" 2862 "producer" fn-ref + "src.app_controller.get_session_insights" "src\app_controller.py" 3049 "producer" fn-ref + "src.ai_client._content_block_to_dict" "src\ai_client.py" 1200 "producer" fn-ref + "src.api_hook_client.select_tab" "src\api_hook_client.py" 263 "producer" fn-ref + "src.app_controller._pending_mma_approval" "src\app_controller.py" 2776 "producer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "producer" fn-ref + "src.models.to_dict" "src\models.py" 701 "producer" fn-ref + "src.api_hook_client.right_click" "src\api_hook_client.py" 237 "producer" fn-ref + "src.app_controller.get_api_session" "src\app_controller.py" 2847 "producer" fn-ref + "src.project_manager.default_discussion" "src\project_manager.py" 117 "producer" fn-ref + "src.ai_client._send_cli_round_result" "src\ai_client.py" 1746 "producer" fn-ref + "src.api_hook_client.get_financial_metrics" "src\api_hook_client.py" 520 "producer" fn-ref -\ === consumers (0 items) === +\ === consumers (66 items) === + "src.ai_client._invalidate_token_estimate" "src\ai_client.py" 1240 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 920 "consumer" fn-ref + "src.aggregate.build_markdown_from_items" "src\aggregate.py" 348 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 603 "consumer" fn-ref + "src.ai_client._create_gemini_cache_result" "src\ai_client.py" 1706 "consumer" fn-ref + "src.ai_client._send_grok" "src\ai_client.py" 2530 "consumer" fn-ref + "src.ai_client._strip_private_keys" "src\ai_client.py" 1464 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 506 "consumer" fn-ref + "src.ai_client._send_gemini_cli" "src\ai_client.py" 2019 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 814 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 893 "consumer" fn-ref + "src.ai_client._send_gemini" "src\ai_client.py" 1802 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 378 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1038 "consumer" fn-ref + "src.ai_client._send_anthropic" "src\ai_client.py" 1405 "consumer" fn-ref + "src.project_manager.save_project" "src\project_manager.py" 229 "consumer" fn-ref + "src.ai_client._trim_anthropic_history" "src\ai_client.py" 1353 "consumer" fn-ref + "src.ai_client._send_llama" "src\ai_client.py" 2858 "consumer" fn-ref + "src.aggregate.build_tier3_context" "src\aggregate.py" 382 "consumer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 4240 "consumer" fn-ref + "src.project_manager.format_discussion" "src\project_manager.py" 69 "consumer" fn-ref + "src.project_manager.entry_to_str" "src\project_manager.py" 49 "consumer" fn-ref + "src.ai_client._repair_minimax_history" "src\ai_client.py" 2462 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1007 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 747 "consumer" fn-ref + "src.ai_client._strip_stale_file_refreshes" "src\ai_client.py" 1253 "consumer" fn-ref + "src.ai_client._send_deepseek" "src\ai_client.py" 2165 "consumer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 3332 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 683 "consumer" fn-ref + "src.aggregate.build_markdown_no_history" "src\aggregate.py" 366 "consumer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 267 "consumer" fn-ref + "src.ai_client._send_llama_native" "src\ai_client.py" 2958 "consumer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 2938 "consumer" fn-ref + "src.ai_client._send_qwen" "src\ai_client.py" 2773 "consumer" fn-ref + "src.app_controller._on_comms_entry" "src\app_controller.py" 4282 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 712 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 866 "consumer" fn-ref + "src.ai_client._repair_deepseek_history" "src\ai_client.py" 2138 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 454 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 575 "consumer" fn-ref + "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 945 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 630 "consumer" fn-ref + "src.ai_client._repair_anthropic_history" "src\ai_client.py" 1381 "consumer" fn-ref + "src.ai_client._strip_cache_controls" "src\ai_client.py" 1291 "consumer" fn-ref + "src.aggregate.run" "src\aggregate.py" 479 "consumer" fn-ref + "src.models._save_config_to_disk" "src\models.py" 199 "consumer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 2716 "consumer" fn-ref + "src.app_controller._start_track_logic_result" "src\app_controller.py" 4728 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 949 "consumer" fn-ref + "src.ai_client._estimate_prompt_tokens" "src\ai_client.py" 1243 "consumer" fn-ref + "src.ai_client._append_comms" "src\ai_client.py" 257 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 982 "consumer" fn-ref + "src.ai_client._estimate_message_tokens" "src\ai_client.py" 1218 "consumer" fn-ref + "src.ai_client._add_history_cache_breakpoint" "src\ai_client.py" 1299 "consumer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 2089 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 295 "consumer" fn-ref + "src.aggregate._build_files_section_from_items" "src\aggregate.py" 300 "consumer" fn-ref + "src.ai_client._trim_minimax_history" "src\ai_client.py" 2482 "consumer" fn-ref + "src.app_controller._refresh_api_metrics" "src\app_controller.py" 3074 "consumer" fn-ref + "src.app_controller._start_track_logic" "src\app_controller.py" 4721 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 416 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 656 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 1072 "consumer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 253 "consumer" fn-ref + "src.ai_client._send_minimax" "src\ai_client.py" 2616 "consumer" fn-ref + "src.ai_client.send" "src\ai_client.py" 3208 "consumer" fn-ref \ === access_pattern === - "mixed" access-pattern + "whole_struct" access-pattern -\ === access_pattern_evidence (0 items) === +\ === access_pattern_evidence (50 items) === + "src.ai_client._invalidate_token_estimate" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.aggregate.build_markdown_from_items" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._create_gemini_cache_result" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_grok" "whole_struct" 0 "low" ap-evidence + "src.ai_client._strip_private_keys" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_gemini_cli" "whole_struct" 0 "low" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_gemini" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._send_anthropic" "whole_struct" 0 "low" ap-evidence + "src.project_manager.save_project" "mixed" 2 "high" ap-evidence + "src.ai_client._trim_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._send_llama" "whole_struct" 0 "low" ap-evidence + "src.aggregate.build_tier3_context" "whole_struct" 0 "low" ap-evidence + "src.app_controller._offload_entry_payload" "whole_struct" 0 "low" ap-evidence + "src.project_manager.format_discussion" "whole_struct" 0 "low" ap-evidence + "src.project_manager.entry_to_str" "whole_struct" 1 "high" ap-evidence + "src.ai_client._repair_minimax_history" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._strip_stale_file_refreshes" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_deepseek" "whole_struct" 0 "low" ap-evidence + "src.ai_client._add_bleed_derived" "field_by_field" 9 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.aggregate.build_markdown_no_history" "whole_struct" 0 "low" ap-evidence + "src.project_manager.flat_config" "whole_struct" 1 "high" ap-evidence + "src.ai_client._send_llama_native" "whole_struct" 0 "low" ap-evidence + "src.ai_client.ollama_chat" "whole_struct" 0 "low" ap-evidence + "src.ai_client._send_qwen" "whole_struct" 0 "low" ap-evidence + "src.app_controller._on_comms_entry" "field_by_field" 10 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._repair_deepseek_history" "whole_struct" 1 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._execute_single_tool_call_async" "mixed" 2 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._repair_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._strip_cache_controls" "whole_struct" 0 "low" ap-evidence + "src.aggregate.run" "field_by_field" 3 "high" ap-evidence + "src.models._save_config_to_disk" "whole_struct" 0 "low" ap-evidence + "src.ai_client._dashscope_call" "whole_struct" 0 "low" ap-evidence + "src.app_controller._start_track_logic_result" "field_by_field" 17 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.ai_client._estimate_prompt_tokens" "whole_struct" 0 "low" ap-evidence \ === frequency === "per_turn" frequency -\ === frequency_evidence (2 items) === - "src.ai_client._build_anthropic_tools" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence - "src.ai_client._build_deepseek_tools" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence +\ === frequency_evidence (5 items) === + "src.ai_client._extract_dashscope_tool_calls" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.api_hook_client.get_warmup_wait" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence + "src.app_controller.wait" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence + "src.ai_client._dashscope_call" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.app_controller._pending_mma_spawn" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence \ === result_coverage === - 2 2 0 0 result-coverage + 98 98 46 0 result-coverage \ === type_alias_coverage === - 0 0 0 type-alias-coverage + 135 0 135 type-alias-coverage \ === cross_audit_findings === "audit_optional_in_3_files" 76 "src\ai_client.py" 159 "76 sites" cross-audit-finding 5 cross-audit-findings \ === decomposition_cost === - 470 0 0 "insufficient_data" "ToolDefinition: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern." nil 5 true decomp-cost + 470 0 70 "hold" "ToolDefinition: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 5 true decomp-cost \ === optimization_candidates (0 items) === diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.md b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.md index 8b6d7e28..af05d563 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.md +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.md @@ -6,81 +6,421 @@ ## Pipeline summary -- Producers: 2 -- Consumers: 0 -- Distinct producer fqnames: 2 -- Distinct consumer fqnames: 0 -- Access pattern (aggregate): mixed +- Producers: 119 +- Consumers: 66 +- Distinct producer fqnames: 98 +- Distinct consumer fqnames: 46 +- Access pattern (aggregate): whole_struct - Frequency (aggregate): per_turn -- Decomposition direction: insufficient_data +- Decomposition direction: hold - Struct field count (estimated): 5 -## Producers (2) +## Producers (119) -### `src\ai_client.py` (2 producers) +### `src\aggregate.py` (1 producer) -- `src.ai_client._build_anthropic_tools` (line 623) +- `src.aggregate.build_file_items` (line 158) + +### `src\ai_client.py` (18 producers) + +- `src.ai_client._extract_dashscope_tool_calls` (line 2754) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._strip_private_keys` (line 1464) - `src.ai_client._build_deepseek_tools` (line 1148) +- `src.ai_client._parse_tool_args_result` (line 741) +- `src.ai_client._build_chunked_context_blocks` (line 1281) +- `src.ai_client._get_anthropic_tools` (line 664) +- `src.ai_client._get_deepseek_tools` (line 1194) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client.get_gemini_cache_stats` (line 1604) +- `src.ai_client._load_credentials` (line 282) +- `src.ai_client.get_token_stats` (line 3185) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._build_anthropic_tools` (line 623) +- `src.ai_client.get_comms_log` (line 273) +- `src.ai_client._content_block_to_dict` (line 1200) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_cli_round_result` (line 1746) -## Consumers (0) +### `src\api_hook_client.py` (39 producers) -_(none)_ +- `src.api_hook_client.get_warmup_wait` (line 332) +- `src.api_hook_client.wait_for_event` (line 136) +- `src.api_hook_client.clear_events` (line 129) +- `src.api_hook_client.get_warmup_status` (line 325) +- `src.api_hook_client.get_project` (line 367) +- `src.api_hook_client.get_mma_workers` (line 546) +- `src.api_hook_client.reject_patch` (line 288) +- `src.api_hook_client.get_gui_state` (line 165) +- `src.api_hook_client.get_events` (line 124) +- `src.api_hook_client.post_project` (line 473) +- `src.api_hook_client.get_session` (line 502) +- `src.api_hook_client.get_io_pool_status` (line 420) +- `src.api_hook_client.trigger_patch` (line 274) +- `src.api_hook_client.get_gui_health` (line 434) +- `src.api_hook_client.get_status` (line 105) +- `src.api_hook_client.get_context_state` (line 491) +- `src.api_hook_client.set_value` (line 212) +- `src.api_hook_client.post_gui` (line 149) +- `src.api_hook_client.get_gui_diagnostics` (line 311) +- `src.api_hook_client.get_mma_status` (line 539) +- `src.api_hook_client.get_startup_timeline` (line 353) +- `src.api_hook_client.get_node_status` (line 532) +- `src.api_hook_client.get_performance` (line 318) +- `src.api_hook_client.post_session` (line 117) +- `src.api_hook_client.push_event` (line 156) +- `src.api_hook_client.get_warmup_canaries` (line 342) +- `src.api_hook_client.drag` (line 230) +- `src.api_hook_client.apply_patch` (line 281) +- `src.api_hook_client.post_project` (line 470) +- `src.api_hook_client.get_patch_status` (line 295) +- `src.api_hook_client.wait_for_project_switch` (line 389) +- `src.api_hook_client.click` (line 223) +- `src.api_hook_client.select_list_item` (line 256) +- `src.api_hook_client.get_project_switch_status` (line 374) +- `src.api_hook_client.get_system_telemetry` (line 524) +- `src.api_hook_client._make_request` (line 65) +- `src.api_hook_client.select_tab` (line 263) +- `src.api_hook_client.right_click` (line 237) +- `src.api_hook_client.get_financial_metrics` (line 520) + +### `src\app_controller.py` (30 producers) + +- `src.app_controller.wait` (line 5205) +- `src.app_controller._pending_mma_spawn` (line 2772) +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._api_get_diagnostics` (line 202) +- `src.app_controller.get_gui_state` (line 2829) +- `src.app_controller.load_config` (line 5142) +- `src.app_controller._api_get_session` (line 374) +- `src.app_controller._api_pending_actions` (line 335) +- `src.app_controller.get_context` (line 2892) +- `src.app_controller.token_stats` (line 2898) +- `src.app_controller._api_get_api_project` (line 188) +- `src.app_controller._api_get_context` (line 398) +- `src.app_controller._api_token_stats` (line 417) +- `src.app_controller.get_mma_status` (line 2835) +- `src.app_controller._api_get_performance` (line 195) +- `src.app_controller._api_get_api_session` (line 170) +- `src.app_controller._api_get_gui_state` (line 123) +- `src.app_controller.get_performance` (line 2856) +- `src.app_controller.pending_actions` (line 2874) +- `src.app_controller.status` (line 2865) +- `src.app_controller._api_get_mma_status` (line 144) +- `src.app_controller.generate` (line 2868) +- `src.app_controller.get_api_project` (line 2853) +- `src.app_controller._api_status` (line 209) +- `src.app_controller._api_generate` (line 221) +- `src.app_controller.get_session` (line 2883) +- `src.app_controller.get_diagnostics` (line 2862) +- `src.app_controller.get_session_insights` (line 3049) +- `src.app_controller._pending_mma_approval` (line 2776) +- `src.app_controller.get_api_session` (line 2847) + +### `src\models.py` (23 producers) + +- `src.models.to_dict` (line 646) +- `src.models.to_dict` (line 406) +- `src.models.to_dict` (line 855) +- `src.models.to_dict` (line 938) +- `src.models.to_dict` (line 1059) +- `src.models.parse_history_entries` (line 214) +- `src.models.to_dict` (line 794) +- `src.models.to_dict` (line 1000) +- `src.models.to_dict` (line 672) +- `src.models.to_dict` (line 355) +- `src.models.to_dict` (line 486) +- `src.models.to_dict` (line 913) +- `src.models.to_dict` (line 596) +- `src.models.to_dict` (line 886) +- `src.models.to_dict` (line 558) +- `src.models._load_config_from_disk` (line 186) +- `src.models.to_dict` (line 441) +- `src.models.to_dict` (line 1024) +- `src.models.to_dict` (line 971) +- `src.models.to_dict` (line 288) +- `src.models.to_dict` (line 737) +- `src.models.to_dict` (line 618) +- `src.models.to_dict` (line 701) + +### `src\project_manager.py` (8 producers) + +- `src.project_manager.get_all_tracks` (line 342) +- `src.project_manager.load_history` (line 209) +- `src.project_manager.str_to_entry` (line 75) +- `src.project_manager.default_project` (line 123) +- `src.project_manager.migrate_from_legacy_config` (line 253) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.load_project` (line 186) +- `src.project_manager.default_discussion` (line 117) + +## Consumers (66) + +### `src\aggregate.py` (5 consumers) + +- `src.aggregate.build_markdown_from_items` (line 348) +- `src.aggregate.build_tier3_context` (line 382) +- `src.aggregate.build_markdown_no_history` (line 366) +- `src.aggregate.run` (line 479) +- `src.aggregate._build_files_section_from_items` (line 300) + +### `src\ai_client.py` (29 consumers) + +- `src.ai_client._invalidate_token_estimate` (line 1240) +- `src.ai_client._create_gemini_cache_result` (line 1706) +- `src.ai_client._send_grok` (line 2530) +- `src.ai_client._strip_private_keys` (line 1464) +- `src.ai_client._send_gemini_cli` (line 2019) +- `src.ai_client._send_gemini` (line 1802) +- `src.ai_client._send_anthropic` (line 1405) +- `src.ai_client._trim_anthropic_history` (line 1353) +- `src.ai_client._send_llama` (line 2858) +- `src.ai_client._repair_minimax_history` (line 2462) +- `src.ai_client._strip_stale_file_refreshes` (line 1253) +- `src.ai_client._send_deepseek` (line 2165) +- `src.ai_client._add_bleed_derived` (line 3332) +- `src.ai_client._send_llama_native` (line 2958) +- `src.ai_client.ollama_chat` (line 2938) +- `src.ai_client._send_qwen` (line 2773) +- `src.ai_client._repair_deepseek_history` (line 2138) +- `src.ai_client._execute_single_tool_call_async` (line 945) +- `src.ai_client._repair_anthropic_history` (line 1381) +- `src.ai_client._strip_cache_controls` (line 1291) +- `src.ai_client._dashscope_call` (line 2716) +- `src.ai_client._estimate_prompt_tokens` (line 1243) +- `src.ai_client._append_comms` (line 257) +- `src.ai_client._estimate_message_tokens` (line 1218) +- `src.ai_client._add_history_cache_breakpoint` (line 1299) +- `src.ai_client._pre_dispatch` (line 2089) +- `src.ai_client._trim_minimax_history` (line 2482) +- `src.ai_client._send_minimax` (line 2616) +- `src.ai_client.send` (line 3208) + +### `src\app_controller.py` (5 consumers) + +- `src.app_controller._offload_entry_payload` (line 4240) +- `src.app_controller._on_comms_entry` (line 4282) +- `src.app_controller._start_track_logic_result` (line 4728) +- `src.app_controller._refresh_api_metrics` (line 3074) +- `src.app_controller._start_track_logic` (line 4721) + +### `src\models.py` (22 consumers) + +- `src.models.from_dict` (line 920) +- `src.models.from_dict` (line 603) +- `src.models.from_dict` (line 506) +- `src.models.from_dict` (line 814) +- `src.models.from_dict` (line 893) +- `src.models.from_dict` (line 378) +- `src.models.from_dict` (line 1038) +- `src.models.from_dict` (line 1007) +- `src.models.from_dict` (line 747) +- `src.models.from_dict` (line 683) +- `src.models.from_dict` (line 712) +- `src.models.from_dict` (line 866) +- `src.models.from_dict` (line 454) +- `src.models.from_dict` (line 575) +- `src.models.from_dict` (line 630) +- `src.models._save_config_to_disk` (line 199) +- `src.models.from_dict` (line 949) +- `src.models.from_dict` (line 982) +- `src.models.from_dict` (line 295) +- `src.models.from_dict` (line 416) +- `src.models.from_dict` (line 656) +- `src.models.from_dict` (line 1072) + +### `src\project_manager.py` (5 consumers) + +- `src.project_manager.save_project` (line 229) +- `src.project_manager.format_discussion` (line 69) +- `src.project_manager.entry_to_str` (line 49) +- `src.project_manager.flat_config` (line 267) +- `src.project_manager.migrate_from_legacy_config` (line 253) ## Field access matrix -_(no field accesses detected)_ +| consumer | _offload_entry_payload | _pending_comms | _pending_comms_lock | _pending_gui_tasks | _pending_gui_tasks_lock | _pending_history_adds | _pending_history_adds_lock | _token_history | _topological_sort_tickets_result | active_discussion | active_project_path | active_project_root | ai_status | append | config | content | context_files | discussion | encode | engines | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_create_gemini_cache_result` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_grok` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini_cli` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_gemini` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_send_anthropic` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 2 | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_deepseek` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_llama_native` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_send_qwen` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | 1 | 1 | 1 | . | . | 4 | 4 | 1 | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | +| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | 2 | 2 | . | . | . | 1 | 1 | 1 | 1 | 4 | . | 1 | . | 1 | . | . | 1 | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | +| `_estimate_prompt_tokens` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | + +_... 23 more fields_ ## Access pattern -**Dominant pattern:** mixed -**Evidence count:** 0 +**Dominant pattern:** whole_struct +**Evidence count:** 50 + +**Per-function pattern distribution:** + +- `whole_struct`: 28 functions (56%) +- `mixed`: 18 functions (36%) +- `field_by_field`: 4 functions (8%) ## SSDL Sketch for `ToolDefinition` ``` [Q:ToolDefinition entry-point] -> [Q:PCG lookup] + -> [1: _invalidate_token_estimate] [B:check] (branches=0) + -> [2: from_dict] [B:check] (branches=0) + -> [3: build_markdown_from_items] [B:check] (branches=9) + -> [4: from_dict] [B:check] (branches=0) + -> [5: _create_gemini_cache_result] [B:check] (branches=3) + -> [6: _send_grok] [B:check] (branches=14) + -> [7: _strip_private_keys] [B:check] (branches=0) + -> [8: from_dict] [B:check] (branches=0) + -> [9: _send_gemini_cli] [B:is None?] (branches=23) [N:safe] + -> [10: from_dict] [B:check] (branches=0) + -> [11: from_dict] [B:check] (branches=0) + -> [12: _send_gemini] [B:is None?] (branches=75) [N:safe] + -> [13: from_dict] [B:check] (branches=0) + -> [14: from_dict] [B:check] (branches=0) + -> [15: _send_anthropic] [B:is None?] (branches=40) [N:safe] + -> [16: save_project] [B:is None?] (branches=7) [N:safe] + -> [17: _trim_anthropic_history] [B:check] (branches=13) + -> [18: _send_llama] [B:check] (branches=13) + -> [19: build_tier3_context] [B:check] (branches=50) + -> [20: _offload_entry_payload] [B:check] (branches=10) + -> [21: format_discussion] [B:check] (branches=0) + -> [22: entry_to_str] [B:check] (branches=3) + -> [23: _repair_minimax_history] [B:check] (branches=10) + -> [24: from_dict] [B:check] (branches=0) + -> [25: from_dict] [B:check] (branches=0) + -> [26: _strip_stale_file_refreshes] [B:check] (branches=12) + -> [27: _send_deepseek] [B:check] (branches=71) + -> [28: _add_bleed_derived] [B:check] (branches=0) + -> [29: from_dict] [B:check] (branches=0) + -> [30: build_markdown_no_history] [B:check] (branches=0) + -> [31: flat_config] [B:check] (branches=2) + -> [32: _send_llama_native] [B:check] (branches=12) + -> [33: ollama_chat] [B:check] (branches=3) + -> [34: _send_qwen] [B:check] (branches=9) + -> [35: _on_comms_entry] [B:check] (branches=32) + -> [36: from_dict] [B:check] (branches=0) + -> [37: from_dict] [B:check] (branches=0) + -> [38: _repair_deepseek_history] [B:check] (branches=6) + -> [39: from_dict] [B:check] (branches=0) + -> [40: from_dict] [B:check] (branches=0) + -> [41: _execute_single_tool_call_async] [B:is None?] (branches=15) [N:safe] + -> [42: from_dict] [B:check] (branches=0) + -> [43: _repair_anthropic_history] [B:check] (branches=6) + -> [44: _strip_cache_controls] [B:check] (branches=4) + -> [45: run] [B:check] (branches=1) + -> [46: _save_config_to_disk] [B:check] (branches=1) + -> [47: _dashscope_call] [B:check] (branches=5) + -> [48: _start_track_logic_result] [B:check] (branches=10) + -> [49: from_dict] [B:check] (branches=0) + -> [50: _estimate_prompt_tokens] [B:check] (branches=2) + -> [51: _append_comms] [B:is None?] (branches=1) [N:safe] + -> [52: from_dict] [B:check] (branches=0) + -> [53: _estimate_message_tokens] [B:is None?] (branches=9) [N:safe] + -> [54: _add_history_cache_breakpoint] [B:check] (branches=5) + -> [55: _pre_dispatch] [B:check] (branches=8) + -> [56: from_dict] [B:check] (branches=0) + -> [57: _build_files_section_from_items] [B:is None?] (branches=5) [N:safe] + -> [58: _trim_minimax_history] [B:check] (branches=8) + -> [59: _refresh_api_metrics] [B:is None?] (branches=11) [N:safe] + -> [60: _start_track_logic] [B:check] (branches=1) + -> [61: from_dict] [B:check] (branches=0) + -> [62: from_dict] [B:check] (branches=0) + -> [63: from_dict] [B:check] (branches=0) + -> [64: migrate_from_legacy_config] [B:check] (branches=2) + -> [65: _send_minimax] [B:check] (branches=11) + -> [66: send] [B:check] (branches=19) -> [T:done] ``` -**Effective codepaths:** 0 (sum of 2^branches across 0 consumers) -**Total branch points:** 0 -**Nil-check functions:** 0 +**Effective codepaths:** 40140116231395706750390 (sum of 2^branches across 66 consumers) +**Total branch points:** 541 +**Nil-check functions:** 9 **Defusing opportunities:** -- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `tooldefinition_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. - - Effective codepaths: 0 -> 1 +- **Nil Sentinel `[N]`**: Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. + - Effective codepaths: 40140116231395706750390 -> 40140116231395706750372 +- **Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]`**: Introduce a `tooldefinition_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 135 field-check branches to 1 cache lookup. + - Effective codepaths: 40140116231395706750390 -> 135 +- **Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]`**: Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. + - Effective codepaths: 40140116231395706750390 -> 66 ## Frequency **Dominant frequency:** per_turn -**Evidence count:** 2 +**Evidence count:** 5 **Per-function frequency distribution:** -- `per_turn`: 2 functions +- `per_turn`: 5 functions ## Result coverage -**Summary:** 2 producers, 0 consumers +**Summary:** 98 producers, 46 consumers | metric | value | |---|---| -| total producers | 2 | -| result producers | 2 | -| total consumers | 0 | +| total producers | 98 | +| result producers | 98 | +| total consumers | 46 | | result consumers | 0 | ## Type alias coverage -**Summary:** 0 sites +**Summary:** 135 sites; 0 typed (0%); 135 untyped (100%) | metric | value | |---|---| -| total field-access sites | 0 | +| total field-access sites | 135 | | typed sites (canonical field) | 0 | -| untyped sites (wildcard) | 0 | +| untyped sites (wildcard) | 135 | ## Cross-audit findings @@ -92,15 +432,59 @@ _(no field accesses detected)_ **Current cost estimate:** 470 us/turn **Componentize savings:** 0 us/turn -**Unify savings:** 0 us/turn -**Recommended direction:** insufficient_data -**Rationale:** ToolDefinition: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +**Unify savings:** 70 us/turn +**Recommended direction:** hold +**Rationale:** ToolDefinition: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. **Struct field count (estimated):** 5 **Struct frozen:** True ## Struct shape (inferred from producer returns) -_(no field access data; cannot infer shape)_ +| field | access count | access pattern | +|---|---|---| +| `content` | 16 | hot | +| `marker` | 16 | hot | +| `get` | 7 | hot | +| `append` | 3 | hot | +| `pop` | 2 | used | +| `files` | 2 | used | +| `encode` | 1 | used | +| `discussion` | 1 | used | +| `estimated_prompt_tokens` | 1 | used | +| `max_prompt_tokens` | 1 | used | +| `utilization_pct` | 1 | used | +| `headroom` | 1 | used | +| `would_trim` | 1 | used | +| `sys_tokens` | 1 | used | +| `tool_tokens` | 1 | used | +| `history_tokens` | 1 | used | +| `local_ts` | 1 | used | +| `_offload_entry_payload` | 1 | used | +| `ui_auto_add_history` | 1 | used | +| `_pending_comms_lock` | 1 | used | +| `session_usage` | 1 | used | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `items` | 1 | used | +| `output` | 1 | used | +| `ai_status` | 1 | used | +| `context_files` | 1 | used | +| `_pending_gui_tasks_lock` | 1 | used | +| `_topological_sort_tickets_result` | 1 | used | +| `active_project_root` | 1 | used | +| `event_queue` | 1 | used | +| `engines` | 1 | used | +| `project` | 1 | used | +| `active_discussion` | 1 | used | +| `submit_io` | 1 | used | +| `tracks` | 1 | used | +| `config` | 1 | used | +| `mma_tier_usage` | 1 | used | +| `_pending_gui_tasks` | 1 | used | +| `mma_step_mode` | 1 | used | +| `active_project_path` | 1 | used | ## Optimization candidates @@ -108,13 +492,71 @@ _(no optimization candidates generated)_ ## Verdict -ToolDefinition: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. +ToolDefinition: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Evidence appendix +### Access pattern evidence + +| function | pattern | field_accesses | confidence | +|---|---|---|---| +| `src.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._create_gemini_cache_result` | `whole_struct` | | low | +| `src.ai_client._send_grok` | `whole_struct` | | low | +| `src.ai_client._strip_private_keys` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini_cli` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_gemini` | `whole_struct` | `encode`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._send_anthropic` | `whole_struct` | | low | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | +| `src.ai_client._send_llama` | `whole_struct` | | low | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | +| `src.ai_client._send_deepseek` | `whole_struct` | | low | +| `src.ai_client._add_bleed_derived` | `field_by_field` | `estimated_prompt_tokens`=1, `max_prompt_tokens`=1, `utilization_pct`=1, `headroom`=1, `would_trim`=1, `sys_tokens`=1, `tool_tokens`=1, `history_tokens`=1, `get`=3 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `src.ai_client._send_llama_native` | `whole_struct` | | low | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._send_qwen` | `whole_struct` | | low | +| `src.app_controller._on_comms_entry` | `field_by_field` | `local_ts`=1, `_offload_entry_payload`=1, `get`=7, `ui_auto_add_history`=3, `_pending_comms_lock`=1, `session_usage`=5, `_pending_history_adds_lock`=4, `_token_history`=1, `_pending_comms`=1, `_pending_history_adds`=4 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | +| `src.models._save_config_to_disk` | `whole_struct` | | low | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.app_controller._start_track_logic_result` | `field_by_field` | `ai_status`=4, `context_files`=1, `get`=3, `_pending_gui_tasks_lock`=2, `_topological_sort_tickets_result`=1, `active_project_root`=1, `event_queue`=1, `engines`=1, `project`=1, `active_discussion`=1 (+7 more) | high | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._estimate_prompt_tokens` | `whole_struct` | | low | + ### Frequency evidence | function | frequency | source | note | |---|---|---|---| -| `src.ai_client._build_anthropic_tools` | `per_turn` | `static_analysis` | producer from src\ai_client.py | -| `src.ai_client._build_deepseek_tools` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.ai_client._extract_dashscope_tool_calls` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.api_hook_client.get_warmup_wait` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller.wait` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.ai_client._dashscope_call` | `per_turn` | `static_analysis` | producer from src\ai_client.py | +| `src.app_controller._pending_mma_spawn` | `per_turn` | `static_analysis` | producer from src\app_controller.py | diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.tree b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.tree index a1595c4d..05627cfb 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.tree +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolDefinition.tree @@ -1,14 +1,197 @@ Metadata: ToolDefinition |- kind: typealias |- memory_dim: control -|- producers: [2] -| |- src.ai_client._build_anthropic_tools (producer) +|- producers: [119] +| |- src.ai_client._extract_dashscope_tool_calls (producer) +| |- src.api_hook_client.get_warmup_wait (producer) +| |- src.app_controller.wait (producer) +| |- src.ai_client._dashscope_call (producer) +| |- src.app_controller._pending_mma_spawn (producer) +| |- src.api_hook_client.wait_for_event (producer) +| |- src.api_hook_client.clear_events (producer) +| |- src.project_manager.get_all_tracks (producer) +| |- src.app_controller._offload_entry_payload (producer) +| |- src.ai_client._strip_private_keys (producer) +| |- src.app_controller._api_get_diagnostics (producer) +| |- src.app_controller.get_gui_state (producer) +| |- src.app_controller.load_config (producer) +| |- src.api_hook_client.get_warmup_status (producer) +| |- src.api_hook_client.get_project (producer) | |- src.ai_client._build_deepseek_tools (producer) -|- consumers: [0] -|- access_pattern: mixed +| |- src.api_hook_client.get_mma_workers (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.reject_patch (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller._api_get_session (producer) +| |- src.ai_client._parse_tool_args_result (producer) +| |- src.app_controller._api_pending_actions (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.load_history (producer) +| |- src.app_controller.get_context (producer) +| |- src.ai_client._build_chunked_context_blocks (producer) +| |- src.ai_client._get_anthropic_tools (producer) +| |- src.api_hook_client.get_gui_state (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client._get_deepseek_tools (producer) +| |- src.models.parse_history_entries (producer) +| |- src.api_hook_client.get_events (producer) +| |- src.ai_client._pre_dispatch (producer) +| |- src.project_manager.str_to_entry (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_session (producer) +| |- src.app_controller.token_stats (producer) +| |- src.api_hook_client.get_io_pool_status (producer) +| |- src.api_hook_client.trigger_patch (producer) +| |- src.api_hook_client.get_gui_health (producer) +| |- src.ai_client.get_gemini_cache_stats (producer) +| |- src.app_controller._api_get_api_project (producer) +| |- src.api_hook_client.get_status (producer) +| |- src.app_controller._api_get_context (producer) +| |- src.app_controller._api_token_stats (producer) +| |- src.api_hook_client.get_context_state (producer) +| |- src.api_hook_client.set_value (producer) +| |- src.app_controller.get_mma_status (producer) +| |- src.api_hook_client.post_gui (producer) +| |- src.api_hook_client.get_gui_diagnostics (producer) +| |- src.app_controller._api_get_performance (producer) +| |- src.app_controller._api_get_api_session (producer) +| |- src.api_hook_client.get_mma_status (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.aggregate.build_file_items (producer) +| |- src.api_hook_client.get_startup_timeline (producer) +| |- src.api_hook_client.get_node_status (producer) +| |- src.api_hook_client.get_performance (producer) +| |- src.ai_client._load_credentials (producer) +| |- src.app_controller._api_get_gui_state (producer) +| |- src.project_manager.default_project (producer) +| |- src.api_hook_client.post_session (producer) +| |- src.app_controller.get_performance (producer) +| |- src.project_manager.migrate_from_legacy_config (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.push_event (producer) +| |- src.api_hook_client.get_warmup_canaries (producer) +| |- src.api_hook_client.drag (producer) +| |- src.app_controller.pending_actions (producer) +| |- src.ai_client.get_token_stats (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.status (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.apply_patch (producer) +| |- src.models._load_config_from_disk (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.app_controller._api_get_mma_status (producer) +| |- src.api_hook_client.get_patch_status (producer) +| |- src.app_controller.generate (producer) +| |- src.models.to_dict (producer) +| |- src.app_controller.get_api_project (producer) +| |- src.app_controller._api_status (producer) +| |- src.project_manager.flat_config (producer) +| |- src.models.to_dict (producer) +| |- src.ai_client.ollama_chat (producer) +| |- src.api_hook_client.wait_for_project_switch (producer) +| |- src.ai_client._build_anthropic_tools (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.click (producer) +| |- src.ai_client.get_comms_log (producer) +| |- src.app_controller._api_generate (producer) +| |- src.api_hook_client.select_list_item (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_project_switch_status (producer) +| |- src.models.to_dict (producer) +| |- src.project_manager.load_project (producer) +| |- src.app_controller.get_session (producer) +| |- src.api_hook_client.get_system_telemetry (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client._make_request (producer) +| |- src.app_controller.get_diagnostics (producer) +| |- src.app_controller.get_session_insights (producer) +| |- src.ai_client._content_block_to_dict (producer) +| |- src.api_hook_client.select_tab (producer) +| |- src.app_controller._pending_mma_approval (producer) +| |- src.ai_client._add_bleed_derived (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.right_click (producer) +| |- src.app_controller.get_api_session (producer) +| |- src.project_manager.default_discussion (producer) +| |- src.ai_client._send_cli_round_result (producer) +| |- src.api_hook_client.get_financial_metrics (producer) +|- consumers: [66] +| |- src.ai_client._invalidate_token_estimate (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_from_items (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._create_gemini_cache_result (consumer) +| |- src.ai_client._send_grok (consumer) +| |- src.ai_client._strip_private_keys (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_gemini_cli (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_gemini (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._send_anthropic (consumer) +| |- src.project_manager.save_project (consumer) +| |- src.ai_client._trim_anthropic_history (consumer) +| |- src.ai_client._send_llama (consumer) +| |- src.aggregate.build_tier3_context (consumer) +| |- src.app_controller._offload_entry_payload (consumer) +| |- src.project_manager.format_discussion (consumer) +| |- src.project_manager.entry_to_str (consumer) +| |- src.ai_client._repair_minimax_history (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._strip_stale_file_refreshes (consumer) +| |- src.ai_client._send_deepseek (consumer) +| |- src.ai_client._add_bleed_derived (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate.build_markdown_no_history (consumer) +| |- src.project_manager.flat_config (consumer) +| |- src.ai_client._send_llama_native (consumer) +| |- src.ai_client.ollama_chat (consumer) +| |- src.ai_client._send_qwen (consumer) +| |- src.app_controller._on_comms_entry (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._repair_deepseek_history (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._execute_single_tool_call_async (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._repair_anthropic_history (consumer) +| |- src.ai_client._strip_cache_controls (consumer) +| |- src.aggregate.run (consumer) +| |- src.models._save_config_to_disk (consumer) +| |- src.ai_client._dashscope_call (consumer) +| |- src.app_controller._start_track_logic_result (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._estimate_prompt_tokens (consumer) +| |- src.ai_client._append_comms (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._estimate_message_tokens (consumer) +| |- src.ai_client._add_history_cache_breakpoint (consumer) +| |- src.ai_client._pre_dispatch (consumer) +| |- src.models.from_dict (consumer) +| |- src.aggregate._build_files_section_from_items (consumer) +| |- src.ai_client._trim_minimax_history (consumer) +| |- src.app_controller._refresh_api_metrics (consumer) +| |- src.app_controller._start_track_logic (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.models.from_dict (consumer) +| |- src.project_manager.migrate_from_legacy_config (consumer) +| |- src.ai_client._send_minimax (consumer) +| |- src.ai_client.send (consumer) +|- access_pattern: whole_struct |- frequency: per_turn -|- result_coverage: 2 producers, 0 consumers -|- type_alias_coverage: 0 sites +|- result_coverage: 98 producers, 46 consumers +|- type_alias_coverage: 135 sites; 0 typed (0%); 135 untyped (100%) |- cross_audit_findings: 1 findings -|- decomposition_cost: insufficient_data (470 us) +|- decomposition_cost: hold (470 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/call_graph.md b/docs/reports/code_path_audit/2026-06-22/call_graph.md index 4df0f735..5d0b1863 100644 --- a/docs/reports/code_path_audit/2026-06-22/call_graph.md +++ b/docs/reports/code_path_audit/2026-06-22/call_graph.md @@ -2,240 +2,2247 @@ Functions that are producers or consumers of each aggregate, grouped by file. -## Metadata (117 producers + 66 consumers) +## Metadata (483 producers + 752 consumers) | role | fqname | file | |---|---|---| -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | -| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | -| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | -| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | -| producer | `src.app_controller.generate` | `src\app_controller.py` | -| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | -| producer | `src.app_controller.token_stats` | `src\app_controller.py` | -| producer | `src.project_manager.flat_config` | `src\project_manager.py` | -| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | -| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | -| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | -| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | -| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | -| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | -| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | -| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | -| producer | `src.app_controller.load_config` | `src\app_controller.py` | -| producer | `src.project_manager.load_project` | `src\project_manager.py` | -| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | -| producer | `src.models.parse_history_entries` | `src\models.py` | -| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | -| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | -| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | -| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | -| producer | `src.app_controller.status` | `src\app_controller.py` | -| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | -| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._api_generate` | `src\app_controller.py` | -| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | -| producer | `src.app_controller._api_status` | `src\app_controller.py` | -| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | -| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | -| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | -| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | -| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | -| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | -| producer | `src.app_controller.get_context` | `src\app_controller.py` | -| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | -| producer | `src.project_manager.default_project` | `src\project_manager.py` | -| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.gui_2._populate_auto_slices_file_read_result` | `src\gui_2.py` | +| producer | `src.ai_client._try_warm_sdk_result` | `src\ai_client.py` | | producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | -| producer | `src.models._load_config_from_disk` | `src\models.py` | -| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.summarize._summarise_generic` | `src\summarize.py` | +| producer | `src.code_path_audit_ssdl.render_ssdl_sketch` | `src\code_path_audit_ssdl.py` | +| producer | `src.code_path_audit.generate_rationale` | `src\code_path_audit.py` | +| producer | `src.file_cache.get_curated_view` | `src\file_cache.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.summarize.summarise_items` | `src\summarize.py` | +| producer | `src.theme_2.get_palette_names` | `src\theme_2.py` | +| producer | `src.log_registry.get_old_non_whitelisted_sessions` | `src\log_registry.py` | +| producer | `src.app_controller._api_post_api_session` | `src\app_controller.py` | +| producer | `src.code_path_audit_ssdl.suggest_defusing_technique` | `src\code_path_audit_ssdl.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.theme_models.load_themes_from_dir` | `src\theme_models.py` | +| producer | `src.ai_client._list_llama_models` | `src\ai_client.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.project_manager.load_track_history` | `src\project_manager.py` | +| producer | `src.ai_client._get_gemini_history_list` | `src\ai_client.py` | +| producer | `src.mcp_client.py_find_usages` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_c_update_definition_result` | `src\mcp_client.py` | +| producer | `src.beads_client._read_beads` | `src\beads_client.py` | +| producer | `src.mcp_tool_specs.tool_names` | `src\mcp_tool_specs.py` | +| producer | `src.tool_presets._read_raw` | `src\tool_presets.py` | +| producer | `src.app_controller.post_gui` | `src\app_controller.py` | +| producer | `src.mcp_client.get_file_summary` | `src\mcp_client.py` | +| producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | +| producer | `src.aggregate.run` | `src\aggregate.py` | +| producer | `src.gui_2.ui_message` | `src\gui_2.py` | +| producer | `src.file_cache.update_definition` | `src\file_cache.py` | +| producer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.theme_2.get_syntax_palette_for_theme` | `src\theme_2.py` | +| producer | `src.mcp_client.py_get_skeleton_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_c_get_definition_result` | `src\mcp_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.mcp_client._ast_get_signature` | `src\mcp_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.mcp_client.get_tree` | `src\mcp_client.py` | +| producer | `src.project_manager.calculate_track_progress` | `src\project_manager.py` | +| producer | `src.warmup.status` | `src\warmup.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.mcp_client.py_set_signature` | `src\mcp_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.mcp_client.ts_cpp_get_skeleton` | `src\mcp_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.markdown_helper.detect_language` | `src\markdown_helper.py` | +| producer | `src.gui_2.askdirectory` | `src\gui_2.py` | +| producer | `src.mcp_client.get_file_summary_result` | `src\mcp_client.py` | | producer | `src.aggregate.build_file_items` | `src\aggregate.py` | -| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.file_cache.get_file_id` | `src\file_cache.py` | +| producer | `src.startup_profiler.snapshot` | `src\startup_profiler.py` | +| producer | `src.gui_2.__getattr__` | `src\gui_2.py` | +| producer | `src.aggregate.build_beads_section` | `src\aggregate.py` | +| producer | `src.gui_2._capture_workspace_profile_ini_result` | `src\gui_2.py` | +| producer | `src.outline_tool.get_outline` | `src\outline_tool.py` | +| producer | `src.gui_2._render_context_batch_actions_preview_result` | `src\gui_2.py` | +| producer | `src.api_hook_client.approve_mma_ticket` | `src\api_hook_client.py` | +| producer | `src.app_controller._confirm_and_run` | `src\app_controller.py` | +| producer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| producer | `src.app_controller.current_model` | `src\app_controller.py` | +| producer | `src.ai_client.run_tier4_analysis` | `src\ai_client.py` | +| producer | `src.app_controller.rag_source` | `src\app_controller.py` | +| producer | `src.shell_runner._build_subprocess_env` | `src\shell_runner.py` | +| producer | `src.app_controller._api_health` | `src\app_controller.py` | +| producer | `src.api_hooks._get_app_attr` | `src\api_hooks.py` | +| producer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| producer | `src.app_controller.current_provider` | `src\app_controller.py` | +| producer | `src.summary_cache.get_stats` | `src\summary_cache.py` | +| producer | `src.ai_client._list_deepseek_models` | `src\ai_client.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.mcp_client.dispatch` | `src\mcp_client.py` | +| producer | `src.openai_schemas.to_legacy_dict` | `src\openai_schemas.py` | +| producer | `src.session_logger.log_tool_call` | `src\session_logger.py` | +| producer | `src.gui_2._render_ast_inspector_outline_result` | `src\gui_2.py` | +| producer | `src.shell_runner._load_env_config` | `src\shell_runner.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client.send` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.mcp_client.ts_cpp_get_code_outline` | `src\mcp_client.py` | +| producer | `src.mcp_client.py_update_definition_result` | `src\mcp_client.py` | +| producer | `src.tool_bias.generate_tooling_strategy` | `src\tool_bias.py` | +| producer | `src.theme_2.get_current_font_path` | `src\theme_2.py` | +| producer | `src.result_types.ui_message` | `src\result_types.py` | +| producer | `src.mcp_client.read_file` | `src\mcp_client.py` | +| producer | `src.mcp_client._build_tree` | `src\mcp_client.py` | +| producer | `src.ai_client._ensure_llama_client` | `src\ai_client.py` | +| producer | `src.mcp_client.py_get_signature_result` | `src\mcp_client.py` | +| producer | `src.gui_2._resolve_font_path_result` | `src\gui_2.py` | +| producer | `src.gui_2._diag_layout_state_ini_text_result` | `src\gui_2.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.mcp_client._ast_update_definition` | `src\mcp_client.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.module_loader._require_warmed` | `src\module_loader.py` | +| producer | `src.code_path_audit._extract_type_name` | `src\code_path_audit.py` | +| producer | `src.performance_monitor.get_metrics` | `src\performance_monitor.py` | +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.mcp_client.fetch_url_result` | `src\mcp_client.py` | +| producer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| producer | `src.gui_2.missing_files` | `src\gui_2.py` | +| producer | `src.events.to_dict` | `src\events.py` | +| producer | `src.app_controller.startup_timeline` | `src\app_controller.py` | +| producer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| producer | `src.ai_client.list_models` | `src\ai_client.py` | +| producer | `src.ai_client._run_script` | `src\ai_client.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| producer | `src.mcp_client.get_git_diff_result` | `src\mcp_client.py` | +| producer | `src.app_controller.warmup_status` | `src\app_controller.py` | +| producer | `src.mcp_client.ts_cpp_update_definition_result` | `src\mcp_client.py` | +| producer | `src.api_hook_client.pause_mma_pipeline` | `src\api_hook_client.py` | +| producer | `src.mcp_client.ts_cpp_update_definition` | `src\mcp_client.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.session_logger._now_ts` | `src\session_logger.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.gui_2._render_warmup_status_indicator_result` | `src\gui_2.py` | +| producer | `src.workspace_manager.load_all_profiles` | `src\workspace_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.aggregate.group_files_by_dir` | `src\aggregate.py` | +| producer | `src.ai_client.run_tier4_patch_generation` | `src\ai_client.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.mcp_client.async_dispatch` | `src\mcp_client.py` | +| producer | `src.code_path_audit_cross_audit._normalize_path` | `src\code_path_audit_cross_audit.py` | +| producer | `src.orchestrator_pm.generate_tracks` | `src\orchestrator_pm.py` | +| producer | `src.mcp_client.py_get_definition_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.list_directory_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_cpp_get_skeleton_result` | `src\mcp_client.py` | +| producer | `src.mcp_tool_specs.to_dict` | `src\mcp_tool_specs.py` | +| producer | `src.code_path_audit_cross_audit.map_finding_to_aggregates` | `src\code_path_audit_cross_audit.py` | +| producer | `src.app_controller._get_discussion_names` | `src\app_controller.py` | +| producer | `src.mcp_client.py_get_imports` | `src\mcp_client.py` | +| producer | `src.synthesis_formatter.format_takes_diff` | `src\synthesis_formatter.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.mcp_client.search_files` | `src\mcp_client.py` | +| producer | `src.dag_engine.topological_sort` | `src\dag_engine.py` | +| producer | `src.code_path_audit_ssdl.render_organization_deductions` | `src\code_path_audit_ssdl.py` | +| producer | `src.mcp_client.py_get_var_declaration_result` | `src\mcp_client.py` | +| producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.fuzzy_anchor.get_context` | `src\fuzzy_anchor.py` | +| producer | `src.mcp_client.read_file_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.derive_code_path` | `src\mcp_client.py` | +| producer | `src.ai_client._get_context_marker` | `src\ai_client.py` | +| producer | `src.mcp_client.ts_cpp_get_signature_result` | `src\mcp_client.py` | +| producer | `src.shell_runner.run_powershell` | `src\shell_runner.py` | +| producer | `src.code_path_audit_cross_audit.aggregate_findings` | `src\code_path_audit_cross_audit.py` | +| producer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| producer | `src.code_path_audit_analysis._field_names_for_aggregate` | `src\code_path_audit_analysis.py` | +| producer | `src.summarize.build_summary_markdown` | `src\summarize.py` | +| producer | `src.markdown_helper._normalize_bullet_delimiters` | `src\markdown_helper.py` | +| producer | `src.app_controller._api_post_gui` | `src\app_controller.py` | +| producer | `src.mcp_client.py_get_symbol_info` | `src\mcp_client.py` | +| producer | `src.app_controller._api_confirm_action` | `src\app_controller.py` | +| producer | `src.warmup.canaries` | `src\warmup.py` | +| producer | `src.mcp_client.py_get_hierarchy` | `src\mcp_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.api_hook_client.mutate_mma_dag` | `src\api_hook_client.py` | +| producer | `src.models.provider` | `src\models.py` | +| producer | `src.ai_client._send_llama` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.aggregate.build_discussion_text` | `src\aggregate.py` | +| producer | `src.mcp_client.py_set_signature_result` | `src\mcp_client.py` | | producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | | producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | -| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | -| producer | `src.app_controller.wait` | `src\app_controller.py` | -| producer | `src.app_controller.get_session` | `src\app_controller.py` | -| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | -| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.app_controller.list_sessions` | `src\app_controller.py` | +| producer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| producer | `src.fuzzy_anchor.create_slice` | `src\fuzzy_anchor.py` | +| producer | `src.app_controller.get_symbol_definition` | `src\app_controller.py` | +| producer | `src.openai_compatible._to_dict_tool_call` | `src\openai_compatible.py` | | producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | -| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.mcp_client.py_set_var_declaration` | `src\mcp_client.py` | +| producer | `src.mcp_client.py_get_class_summary` | `src\mcp_client.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.delete_session` | `src\app_controller.py` | | producer | `src.app_controller.get_performance` | `src\app_controller.py` | -| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.mcp_tool_specs.to_dict` | `src\mcp_tool_specs.py` | +| producer | `src.theme_models.to_dict` | `src\theme_models.py` | +| producer | `src.code_path_audit_cross_audit._file_to_aggregates` | `src\code_path_audit_cross_audit.py` | +| producer | `src.code_path_audit.to_markdown` | `src\code_path_audit.py` | +| producer | `src.mcp_client.py_check_syntax_result` | `src\mcp_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.code_path_audit.load_frequency_overrides` | `src\code_path_audit.py` | +| producer | `src.ai_client._ensure_grok_client` | `src\ai_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.orchestrator_pm.get_track_history_summary` | `src\orchestrator_pm.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.mcp_client.ts_c_get_skeleton` | `src\mcp_client.py` | +| producer | `src.app_controller.warmup_canaries` | `src\app_controller.py` | +| producer | `src.mcp_client.get_tool_schemas` | `src\mcp_client.py` | +| producer | `src.app_controller._extract_tool_name` | `src\app_controller.py` | +| producer | `src.events._make_serializable` | `src\events.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.command_palette.register` | `src\command_palette.py` | +| producer | `src.ai_client._chunk_text` | `src\ai_client.py` | +| producer | `src.code_path_audit_analysis._analyze_function_param_names` | `src\code_path_audit_analysis.py` | +| producer | `src.summarize.summarise_file` | `src\summarize.py` | +| producer | `src.mcp_client.py_set_var_declaration_result` | `src\mcp_client.py` | +| producer | `src.code_path_audit_render.render_full_markdown` | `src\code_path_audit_render.py` | +| producer | `src.ai_client.run_discussion_compression` | `src\ai_client.py` | +| producer | `src.mcp_client.ts_cpp_get_definition` | `src\mcp_client.py` | +| producer | `src.ai_client._run_tier4_patch_generation_result` | `src\ai_client.py` | +| producer | `src.history.to_dict` | `src\history.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.mcp_client.get_all_tools` | `src\mcp_client.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.ai_client._get_combined_system_prompt` | `src\ai_client.py` | +| producer | `src.mcp_client.py_get_imports_result` | `src\mcp_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.personas.load_all` | `src\personas.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.app_controller.parse_symbols` | `src\app_controller.py` | +| producer | `src.code_path_audit_render.render_call_graph_rollup` | `src\code_path_audit_render.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.ai_client._list_grok_models` | `src\ai_client.py` | +| producer | `src.app_controller._api_list_sessions` | `src\app_controller.py` | +| producer | `src.beads_client.create_bead` | `src\beads_client.py` | +| producer | `src.mcp_client.ts_c_get_code_outline` | `src\mcp_client.py` | +| producer | `src.mcp_client.py_get_definition` | `src\mcp_client.py` | +| producer | `src.app_controller.rag_mcp_server` | `src\app_controller.py` | +| producer | `src.mcp_client.set_file_slice` | `src\mcp_client.py` | +| producer | `src.models.get` | `src\models.py` | +| producer | `src.mcp_client.search_files_result` | `src\mcp_client.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._extract_minimax_reasoning` | `src\ai_client.py` | +| producer | `src.mcp_client.py_update_definition` | `src\mcp_client.py` | +| producer | `src.commands.register` | `src\commands.py` | +| producer | `src.code_path_audit._atom` | `src\code_path_audit.py` | +| producer | `src.ai_client._extract_gemini_thoughts_result` | `src\ai_client.py` | +| producer | `src.rag_engine.get_all_indexed_paths` | `src\rag_engine.py` | +| producer | `src.mcp_client.ts_cpp_get_code_outline_result` | `src\mcp_client.py` | +| producer | `src.diff_viewer.get_line_color` | `src\diff_viewer.py` | +| producer | `src.mcp_client.get_file_slice` | `src\mcp_client.py` | | producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.external_editor.create_temp_modified_file` | `src\external_editor.py` | +| producer | `src.models.model` | `src\models.py` | +| producer | `src.commands.__getattr__` | `src\commands.py` | +| producer | `src.summary_cache.get_file_hash` | `src\summary_cache.py` | +| producer | `src.presets.get_preset_scope` | `src\presets.py` | +| producer | `src.app_controller._compute_warmup_list` | `src\app_controller.py` | +| producer | `src.app_controller._resolve_log_ref` | `src\app_controller.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.app_controller.stream` | `src\app_controller.py` | +| producer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.code_path_audit.read_input_json` | `src\code_path_audit.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | +| producer | `src.mcp_client.web_search_result` | `src\mcp_client.py` | +| producer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.mcp_client.py_get_code_outline` | `src\mcp_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.log_registry.__getitem__` | `src\log_registry.py` | +| producer | `src.gui_2.app_debug_info` | `src\gui_2.py` | +| producer | `src.mcp_client.py_get_signature` | `src\mcp_client.py` | +| producer | `src.events.get` | `src\events.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.mcp_client.py_get_docstring` | `src\mcp_client.py` | +| producer | `src.openai_schemas.to_dict` | `src\openai_schemas.py` | +| producer | `src.mcp_client.py_get_symbol_info_result` | `src\mcp_client.py` | +| producer | `src.api_hook_client.kill_mma_worker` | `src\api_hook_client.py` | +| producer | `src.external_editor.build_diff_command` | `src\external_editor.py` | +| producer | `src.presets._load_file` | `src\presets.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.mcp_client.derive_code_path_result` | `src\mcp_client.py` | +| producer | `src.code_path_audit_ssdl.render_ssdl_rollup` | `src\code_path_audit_ssdl.py` | +| producer | `src.gui_2.current_provider` | `src\gui_2.py` | +| producer | `src.openai_schemas.to_dict` | `src\openai_schemas.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller.ai_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.run_with_tool_loop` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_text_value` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.ai_client.get_provider` | `src\ai_client.py` | +| producer | `src.log_registry.to_dict` | `src\log_registry.py` | +| producer | `src.file_cache.get_targeted_view` | `src\file_cache.py` | +| producer | `src.mcp_client.ts_cpp_get_signature` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_c_get_code_outline_result` | `src\mcp_client.py` | +| producer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| producer | `src.mcp_client.edit_file_result` | `src\mcp_client.py` | +| producer | `src.summarize._summarise_markdown` | `src\summarize.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.confirm_action` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client._build_file_context_text` | `src\ai_client.py` | +| producer | `src.gui_2.askopenfilename` | `src\gui_2.py` | +| producer | `src.file_cache.get_skeleton` | `src\file_cache.py` | +| producer | `src.ai_client.run_tier4_patch_callback` | `src\ai_client.py` | +| producer | `src.mcp_client._ast_get_definition` | `src\mcp_client.py` | +| producer | `src.app_controller._api_get_key` | `src\app_controller.py` | +| producer | `src.markdown_helper._normalize_nested_list_endings` | `src\markdown_helper.py` | +| producer | `src.app_controller.active_project_root` | `src\app_controller.py` | +| producer | `src.app_controller.submit_io` | `src\app_controller.py` | +| producer | `src.code_path_audit.to_tree` | `src\code_path_audit.py` | +| producer | `src.aggregate.compute_file_stats` | `src\aggregate.py` | +| producer | `src.mcp_client.py_get_code_outline_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_c_get_signature_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.get_ui_performance` | `src\mcp_client.py` | +| producer | `src.models.__getattr__` | `src\models.py` | +| producer | `src.log_registry.to_dict` | `src\log_registry.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.gui_2.truncate_entries` | `src\gui_2.py` | +| producer | `src.rag_engine._chunk_text` | `src\rag_engine.py` | +| producer | `src.app_controller.summary_cache` | `src\app_controller.py` | +| producer | `src.aggregate.build_discussion_section` | `src\aggregate.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.gui_2.ui_screenshot_paths` | `src\gui_2.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.spawn_mma_worker` | `src\api_hook_client.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.mcp_client.web_search` | `src\mcp_client.py` | +| producer | `src.log_registry.get` | `src\log_registry.py` | +| producer | `src.conductor_tech_lead.generate_tickets` | `src\conductor_tech_lead.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.personas._load_file` | `src\personas.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.theme_models.to_dict` | `src\theme_models.py` | +| producer | `src.ai_client._list_gemini_cli_models` | `src\ai_client.py` | +| producer | `src.log_registry.sessions` | `src\log_registry.py` | +| producer | `src.aggregate.build_markdown` | `src\aggregate.py` | +| producer | `src.app_controller.rag_emb_provider` | `src\app_controller.py` | +| producer | `src.file_cache.find_id` | `src\file_cache.py` | +| producer | `src.aggregate.build_screenshots_section` | `src\aggregate.py` | +| producer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| producer | `src.markdown_helper._normalize_list_continuations` | `src\markdown_helper.py` | +| producer | `src.code_path_audit_render.render_field_usage_rollup` | `src\code_path_audit_render.py` | +| producer | `src.outline_tool.get_docstring` | `src\outline_tool.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | | producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.api_hooks._safe_controller_result` | `src\api_hooks.py` | +| producer | `src.code_path_audit._resolve_aliases` | `src\code_path_audit.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| producer | `src.conductor_tech_lead.topological_sort` | `src\conductor_tech_lead.py` | +| producer | `src.mcp_client.get_tree_result` | `src\mcp_client.py` | +| producer | `src.mcp_client.ts_cpp_get_definition_result` | `src\mcp_client.py` | +| producer | `src.paths.get_full_path_info` | `src\paths.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.mcp_client.async_dispatch` | `src\mcp_client.py` | +| producer | `src.code_path_audit.render_rollups` | `src\code_path_audit.py` | +| producer | `src.gui_2.asksaveasfilename` | `src\gui_2.py` | +| producer | `src.mcp_client.py_get_class_summary_result` | `src\mcp_client.py` | +| producer | `src.gui_2.current_model` | `src\gui_2.py` | +| producer | `src.app_controller._do_generate` | `src\app_controller.py` | +| producer | `src.app_controller.mcp_config_json` | `src\app_controller.py` | +| producer | `src.mcp_client.get_ui_performance_result` | `src\mcp_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.app_controller.ui_file_paths` | `src\app_controller.py` | +| producer | `src.personas.get_persona_scope` | `src\personas.py` | +| producer | `src.ai_client.get_combined_system_prompt` | `src\ai_client.py` | +| producer | `src.code_path_audit.to_dsl_v2` | `src\code_path_audit.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.summarize._summarise_python` | `src\summarize.py` | +| producer | `src.file_cache._get_name` | `src\file_cache.py` | +| producer | `src.app_controller.__getattr__` | `src\app_controller.py` | +| producer | `src.ai_client._list_qwen_models` | `src\ai_client.py` | +| producer | `src.file_cache.get_definition` | `src\file_cache.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.code_path_audit.code_path_audit_v2` | `src\code_path_audit.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.now_ts` | `src\project_manager.py` | +| producer | `src.commands._get_real_registry` | `src\commands.py` | +| producer | `src.code_path_audit_cross_audit._aggregate_for_fqname` | `src\code_path_audit_cross_audit.py` | +| producer | `src.project_manager.clean_nones` | `src\project_manager.py` | +| producer | `src.ai_client._run_tier4_analysis_result` | `src\ai_client.py` | +| producer | `src.models._clean_nones` | `src\models.py` | +| producer | `src.mcp_client.fetch_url` | `src\mcp_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.tool_presets.load_all_presets` | `src\tool_presets.py` | +| producer | `src.mcp_client.py_get_docstring_result` | `src\mcp_client.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.mcp_client.set_file_slice_result` | `src\mcp_client.py` | +| producer | `src.workspace_manager._load_file` | `src\workspace_manager.py` | +| producer | `src.mcp_client.get_servers_status` | `src\mcp_client.py` | +| producer | `src.ai_client.get_current_tier` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.hot_reloader.capture_state` | `src\hot_reloader.py` | +| producer | `src.presets.load_all` | `src\presets.py` | +| producer | `src.code_path_audit.parse_dsl_v2` | `src\code_path_audit.py` | +| producer | `src.mcp_client.py_check_syntax` | `src\mcp_client.py` | +| producer | `src.mcp_client.edit_file` | `src\mcp_client.py` | +| producer | `src.app_controller.get_api_key` | `src\app_controller.py` | +| producer | `src.mcp_client._ast_get_skeleton` | `src\mcp_client.py` | +| producer | `src.code_path_audit.run_all_cross_audit_reads` | `src\code_path_audit.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.mcp_client._ast_get_code_outline` | `src\mcp_client.py` | +| producer | `src.ai_client.get_bias_profile` | `src\ai_client.py` | +| producer | `src.tool_presets.load_all_bias_profiles` | `src\tool_presets.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.gemini_cli_adapter.send` | `src\gemini_cli_adapter.py` | +| producer | `src.api_hook_client.inject_context` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller.rag_mcp_tool` | `src\app_controller.py` | +| producer | `src.app_controller.post_api_session` | `src\app_controller.py` | +| producer | `src.session_logger.log_tool_output` | `src\session_logger.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.file_cache.get_code_outline` | `src\file_cache.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.mcp_client.get_file_slice_result` | `src\mcp_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.tool_presets.load_all` | `src\tool_presets.py` | +| producer | `src.rag_engine._read_file_content_result` | `src\rag_engine.py` | +| producer | `src.app_controller._api_delete_session` | `src\app_controller.py` | +| producer | `src.gui_2.ui_file_paths` | `src\gui_2.py` | +| producer | `src.mcp_client.get_git_diff` | `src\mcp_client.py` | | producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | | producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.summary_cache.get_summary` | `src\summary_cache.py` | +| producer | `src.warmup._snapshot` | `src\warmup.py` | +| producer | `src.file_cache.get_signature` | `src\file_cache.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.mcp_client.ts_c_update_definition` | `src\mcp_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.ai_client._truncate_tool_output` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_indicator_state` | `src\api_hook_client.py` | +| producer | `src.theme_2.get_current_palette` | `src\theme_2.py` | +| producer | `src.provider_state.providers` | `src\provider_state.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_git_commit` | `src\project_manager.py` | +| producer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| producer | `src.mcp_client.py_get_skeleton` | `src\mcp_client.py` | +| producer | `src.mcp_client.py_get_var_declaration` | `src\mcp_client.py` | +| producer | `src.ai_client._build_file_diff_text` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.markdown_table._split_row` | `src\markdown_table.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.api_hooks_helpers._get_app_attr` | `src\api_hooks_helpers.py` | +| producer | `src.mcp_client.py_find_usages_result` | `src\mcp_client.py` | +| producer | `src.outline_tool.outline` | `src\outline_tool.py` | +| producer | `src.qwen_adapter.build_dashscope_tools` | `src\qwen_adapter.py` | +| producer | `src.theme_2.get_font_loading_params` | `src\theme_2.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.health` | `src\app_controller.py` | +| producer | `src.vendor_capabilities.list_models_for_vendor` | `src\vendor_capabilities.py` | +| producer | `src.app_controller._api_stream` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_value` | `src\api_hook_client.py` | +| producer | `src.summarize._summarise_toml` | `src\summarize.py` | +| producer | `src.app_controller.mma_status` | `src\app_controller.py` | +| producer | `src.theme_models.load_themes_from_toml` | `src\theme_models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.ai_client._send_grok` | `src\ai_client.py` | +| producer | `src.external_editor._find_vscode_common_paths` | `src\external_editor.py` | +| producer | `src.mcp_client.ts_c_get_skeleton_result` | `src\mcp_client.py` | +| producer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| producer | `src.mcp_client.ts_c_get_definition` | `src\mcp_client.py` | +| producer | `src.code_path_audit.load_memory_dim_overrides` | `src\code_path_audit.py` | +| producer | `src.mcp_client.ts_c_get_signature` | `src\mcp_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.ai_client.run_subagent_summarization` | `src\ai_client.py` | +| producer | `src.theme_2._build_semantic_colour_dict` | `src\theme_2.py` | +| producer | `src.api_hook_client.resume_mma_pipeline` | `src\api_hook_client.py` | +| producer | `src.paths.info` | `src\paths.py` | +| producer | `src.gui_2._populate_auto_slices_outline_result` | `src\gui_2.py` | +| producer | `src.mcp_client.list_directory` | `src\mcp_client.py` | +| producer | `src.app_controller.rag_collection_name` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.code_path_audit.aggregate_cross_audit_findings` | `src\code_path_audit.py` | +| consumer | `src.api_hook_client.approve_mma_ticket` | `src\api_hook_client.py` | +| consumer | `src.log_registry.update_auto_whitelist_status` | `src\log_registry.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client.run_tier4_analysis` | `src\ai_client.py` | +| consumer | `src.app_controller._flush_to_project_result` | `src\app_controller.py` | +| consumer | `src.code_path_audit.classify_memory_dim` | `src\code_path_audit.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.beads_client.create_bead` | `src\beads_client.py` | +| consumer | `src.command_palette.fuzzy_match` | `src\command_palette.py` | +| consumer | `src.theme_2.set_gamma` | `src\theme_2.py` | +| consumer | `src.multi_agent_conductor.update_task_status` | `src\multi_agent_conductor.py` | +| consumer | `src.code_path_audit.estimate_call_frequency` | `src\code_path_audit.py` | +| consumer | `src.file_cache.walk` | `src\file_cache.py` | +| consumer | `src.code_path_audit.detect_access_pattern` | `src\code_path_audit.py` | +| consumer | `src.api_hooks._get_app_attr` | `src\api_hooks.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.app_controller._handle_mma_state_update` | `src\app_controller.py` | +| consumer | `src.ai_client._list_deepseek_models` | `src\ai_client.py` | +| consumer | `src.api_hooks.__init__` | `src\api_hooks.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | +| consumer | `src.multi_agent_conductor.approve_task` | `src\multi_agent_conductor.py` | +| consumer | `src.gui_2.ui_screenshot_paths` | `src\gui_2.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.ai_client._extract_gemini_thoughts_result` | `src\ai_client.py` | +| consumer | `src.theme_2.get_brightness` | `src\theme_2.py` | +| consumer | `src.history.undo` | `src\history.py` | +| consumer | `src.gui_2._drain_normalize_errors` | `src\gui_2.py` | +| consumer | `src.app_controller._rename_discussion` | `src\app_controller.py` | +| consumer | `src.mcp_client.get_file_slice` | `src\mcp_client.py` | +| consumer | `src.imgui_scopes.tab_bar` | `src\imgui_scopes.py` | +| consumer | `src.session_logger.log_tool_call` | `src\session_logger.py` | +| consumer | `src.gui_2.current_model` | `src\gui_2.py` | +| consumer | `src.rag_engine.embed` | `src\rag_engine.py` | +| consumer | `src.presets.get_preset_scope` | `src\presets.py` | +| consumer | `src.code_path_audit.file_origin_memory_dim` | `src\code_path_audit.py` | +| consumer | `src.rag_engine.__init__` | `src\rag_engine.py` | +| consumer | `src.theme_2.get_gamma` | `src\theme_2.py` | +| consumer | `src.imgui_scopes.style_var` | `src\imgui_scopes.py` | +| consumer | `src.presets._save_file` | `src\presets.py` | +| consumer | `src.aggregate.is_absolute_with_drive` | `src\aggregate.py` | +| consumer | `src.app_controller._topological_sort_tickets_result` | `src\app_controller.py` | +| consumer | `src.app_controller.ui_file_paths` | `src\app_controller.py` | +| consumer | `src.app_controller.rag_emb_provider` | `src\app_controller.py` | +| consumer | `src.code_path_audit.synthesize_aggregate_profile` | `src\code_path_audit.py` | +| consumer | `src.rag_engine._check_existing_index_result` | `src\rag_engine.py` | +| consumer | `src.code_path_audit.read_input_json` | `src\code_path_audit.py` | +| consumer | `src.file_cache.walk` | `src\file_cache.py` | +| consumer | `src.log_registry.is_session_whitelisted` | `src\log_registry.py` | +| consumer | `src.mcp_client.py_update_definition_result` | `src\mcp_client.py` | +| consumer | `src.markdown_helper.render_unindented` | `src\markdown_helper.py` | +| consumer | `src.summary_cache.set_summary` | `src\summary_cache.py` | +| consumer | `src.qwen_adapter.classify_dashscope_error` | `src\qwen_adapter.py` | +| consumer | `src.app_controller._cb_save_view_preset` | `src\app_controller.py` | +| consumer | `src.gui_2.delete_context_preset` | `src\gui_2.py` | +| consumer | `src.imgui_scopes.style_color` | `src\imgui_scopes.py` | +| consumer | `src.app_controller._handle_set_tool_log_dirty` | `src\app_controller.py` | +| consumer | `src.mcp_client.read_file` | `src\mcp_client.py` | +| consumer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| consumer | `src.theme_2.get_contrast` | `src\theme_2.py` | +| consumer | `src.external_editor.launch_diff` | `src\external_editor.py` | +| consumer | `src.paths.get_archive_dir` | `src\paths.py` | +| consumer | `src.theme_models.from_dict` | `src\theme_models.py` | +| consumer | `src.ai_client._classify_minimax_error` | `src\ai_client.py` | +| consumer | `src.rag_engine._chunk_code_result` | `src\rag_engine.py` | +| consumer | `src.app_controller._set_rag_status` | `src\app_controller.py` | +| consumer | `src.gui_2._resolve_font_path_result` | `src\gui_2.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.app_controller.__init__` | `src\app_controller.py` | +| consumer | `src.gui_2._diag_layout_state_ini_text_result` | `src\gui_2.py` | +| consumer | `src.mcp_client._ast_update_definition` | `src\mcp_client.py` | +| consumer | `src.app_controller.mutate_dag` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_symbol_info_result` | `src\mcp_client.py` | +| consumer | `src.app_controller.cb_load_prior_log` | `src\app_controller.py` | +| consumer | `src.rag_engine.embed` | `src\rag_engine.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.save_track_history` | `src\project_manager.py` | +| consumer | `src.ai_client.set_current_tier` | `src\ai_client.py` | +| consumer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| consumer | `src.app_controller._save_fallback_project_result` | `src\app_controller.py` | +| consumer | `src.module_loader._require_warmed` | `src\module_loader.py` | +| consumer | `src.models.load_mcp_config` | `src\models.py` | +| consumer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| consumer | `src.mcp_client.fetch_url_result` | `src\mcp_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.app_controller._handle_clear_summary_cache` | `src\app_controller.py` | +| consumer | `src.gui_2._tier_stream_scroll_sync_result` | `src\gui_2.py` | +| consumer | `src.workspace_manager.delete_profile` | `src\workspace_manager.py` | +| consumer | `src.app_controller._update_gcli_adapter` | `src\app_controller.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.mcp_client.handle_starttag` | `src\mcp_client.py` | +| consumer | `src.theme_2.set_contrast` | `src\theme_2.py` | +| consumer | `src.app_controller._delete_discussion` | `src\app_controller.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.session_logger.open_session` | `src\session_logger.py` | +| consumer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| consumer | `src.code_path_audit_analysis.compute_real_type_alias_coverage` | `src\code_path_audit_analysis.py` | +| consumer | `src.context_presets.load_all` | `src\context_presets.py` | +| consumer | `src.warmup.submit` | `src\warmup.py` | +| consumer | `src.gui_2._render_ast_inspector_file_content_result` | `src\gui_2.py` | +| consumer | `src.ai_client.list_models` | `src\ai_client.py` | +| consumer | `src.ai_client._run_script` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.theme_2.load_from_config` | `src\theme_2.py` | +| consumer | `src.app_controller._handle_click` | `src\app_controller.py` | +| consumer | `src.warmup._record_failure` | `src\warmup.py` | +| consumer | `src.rag_engine._parse_search_response_result` | `src\rag_engine.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.commands._toggle_window` | `src\commands.py` | +| consumer | `src.rag_engine.embed` | `src\rag_engine.py` | +| consumer | `src.mcp_client.ts_cpp_update_definition` | `src\mcp_client.py` | +| consumer | `src.mcp_client.ts_cpp_get_signature` | `src\mcp_client.py` | +| consumer | `src.events.__init__` | `src\events.py` | +| consumer | `src.mcp_client.ts_c_get_code_outline_result` | `src\mcp_client.py` | +| consumer | `src.ai_client._dashscope_exception_from_response` | `src\ai_client.py` | +| consumer | `src.multi_agent_conductor.update_usage` | `src\multi_agent_conductor.py` | +| consumer | `src.ai_client.set_agent_tools` | `src\ai_client.py` | +| consumer | `src.code_path_audit.is_hot_cold_split` | `src\code_path_audit.py` | +| consumer | `src.aggregate.group_files_by_dir` | `src\aggregate.py` | +| consumer | `src.ai_client.run_tier4_patch_generation` | `src\ai_client.py` | +| consumer | `src.app_controller._symbol_resolution_result` | `src\app_controller.py` | +| consumer | `src.ai_client.set_bias_profile` | `src\ai_client.py` | +| consumer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| consumer | `src.code_path_audit_cross_audit._normalize_path` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.mcp_client.async_dispatch` | `src\mcp_client.py` | +| consumer | `src.ai_client.run_tier4_patch_callback` | `src\ai_client.py` | +| consumer | `src.orchestrator_pm.generate_tracks` | `src\orchestrator_pm.py` | +| consumer | `src.command_palette._close_palette` | `src\command_palette.py` | +| consumer | `src.markdown_helper._normalize_nested_list_endings` | `src\markdown_helper.py` | +| consumer | `src.mcp_client.list_directory_result` | `src\mcp_client.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.app_controller.current_provider` | `src\app_controller.py` | +| consumer | `src.code_path_audit_cross_audit.map_finding_to_aggregates` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.mcp_client.py_get_imports` | `src\mcp_client.py` | +| consumer | `src.external_editor.launch_editor` | `src\external_editor.py` | +| consumer | `src.aggregate.compute_file_stats` | `src\aggregate.py` | +| consumer | `src.gui_2.render_discussion_entry_read_mode` | `src\gui_2.py` | +| consumer | `src.mcp_client.search_files` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.P3_pass` | `src\code_path_audit.py` | +| consumer | `src.mcp_client.ts_c_get_signature_result` | `src\mcp_client.py` | +| consumer | `src.code_path_audit_ssdl.render_organization_deductions` | `src\code_path_audit_ssdl.py` | +| consumer | `src.mcp_client.py_get_var_declaration_result` | `src\mcp_client.py` | +| consumer | `src.tool_presets.delete_bias_profile` | `src\tool_presets.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.mcp_client.read_file_result` | `src\mcp_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.gui_2.render_path_field` | `src\gui_2.py` | +| consumer | `src.mcp_client.ts_cpp_get_signature_result` | `src\mcp_client.py` | +| consumer | `src.mcp_client.derive_code_path` | `src\mcp_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.shell_runner.run_powershell` | `src\shell_runner.py` | +| consumer | `src.app_controller._on_ai_stream` | `src\app_controller.py` | +| consumer | `src.code_path_audit_cross_audit.aggregate_findings` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| consumer | `src.summarize.build_summary_markdown` | `src\summarize.py` | +| consumer | `src.markdown_helper._normalize_bullet_delimiters` | `src\markdown_helper.py` | +| consumer | `src.app_controller._api_post_gui` | `src\app_controller.py` | +| consumer | `src.presets.delete_preset` | `src\presets.py` | +| consumer | `src.app_controller._handle_hide_patch_modal` | `src\app_controller.py` | +| consumer | `src.gui_2.ui_file_paths` | `src\gui_2.py` | +| consumer | `src.app_controller._api_confirm_action` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_symbol_info` | `src\mcp_client.py` | +| consumer | `src.code_path_audit_analysis.analyze_consumer_pattern` | `src\code_path_audit_analysis.py` | +| consumer | `src.app_controller._cb_load_track_result` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_hierarchy` | `src\mcp_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.context_presets.delete_preset` | `src\context_presets.py` | +| consumer | `src.warmup._warmup_one` | `src\warmup.py` | +| consumer | `src.gui_2.truncate_entries` | `src\gui_2.py` | +| consumer | `src.api_hook_client.mutate_mma_dag` | `src\api_hook_client.py` | +| consumer | `src.mcp_tool_specs.get_tool_spec` | `src\mcp_tool_specs.py` | +| consumer | `src.aggregate.build_discussion_text` | `src\aggregate.py` | +| consumer | `src.presets.save_preset` | `src\presets.py` | +| consumer | `src.mcp_client.py_set_signature_result` | `src\mcp_client.py` | +| consumer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.performance_monitor.get_history` | `src\performance_monitor.py` | +| consumer | `src.imgui_scopes.menu` | `src\imgui_scopes.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.command_palette.render_palette_modal` | `src\command_palette.py` | +| consumer | `src.api_hooks.__init__` | `src\api_hooks.py` | +| consumer | `src.fuzzy_anchor.create_slice` | `src\fuzzy_anchor.py` | +| consumer | `src.tool_presets._get_path` | `src\tool_presets.py` | +| consumer | `src.app_controller.get_symbol_definition` | `src\app_controller.py` | +| consumer | `src.markdown_helper._render_code_block` | `src\markdown_helper.py` | +| consumer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| consumer | `src.beads_client.update_bead` | `src\beads_client.py` | +| consumer | `src.rag_engine.index_file` | `src\rag_engine.py` | +| consumer | `src.mcp_client.py_set_var_declaration` | `src\mcp_client.py` | +| consumer | `src.app_controller._create_discussion` | `src\app_controller.py` | +| consumer | `src.gui_2._simulate_save_preset` | `src\gui_2.py` | +| consumer | `src.app_controller.delete_session` | `src\app_controller.py` | +| consumer | `src.aggregate.build_markdown` | `src\aggregate.py` | +| consumer | `src.multi_agent_conductor.confirm_execution` | `src\multi_agent_conductor.py` | +| consumer | `src.app_controller._handle_mma_step_approval` | `src\app_controller.py` | +| consumer | `src.imgui_scopes.tree_node_ex` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client.py_check_syntax_result` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.load_frequency_overrides` | `src\code_path_audit.py` | +| consumer | `src.history.push` | `src\history.py` | +| consumer | `src.app_controller.mma_status` | `src\app_controller.py` | +| consumer | `src.app_controller._cb_save_workspace_profile` | `src\app_controller.py` | +| consumer | `src.api_hooks._safe_controller_result` | `src\api_hooks.py` | +| consumer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| consumer | `src.gui_2._on_warmup_complete_callback` | `src\gui_2.py` | +| consumer | `src.rag_engine.delete_documents` | `src\rag_engine.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.command_palette._compute_score` | `src\command_palette.py` | +| consumer | `src.mcp_client.ts_c_get_skeleton` | `src\mcp_client.py` | +| consumer | `src.conductor_tech_lead.topological_sort` | `src\conductor_tech_lead.py` | +| consumer | `src.personas.save_persona` | `src\personas.py` | +| consumer | `src.app_controller._spawn_worker` | `src\app_controller.py` | +| consumer | `src.markdown_helper.render_code` | `src\markdown_helper.py` | +| consumer | `src.app_controller._extract_tool_name` | `src\app_controller.py` | +| consumer | `src.app_controller.__init__` | `src\app_controller.py` | +| consumer | `src.events._make_serializable` | `src\events.py` | +| consumer | `src.multi_agent_conductor.worker_comms_callback` | `src\multi_agent_conductor.py` | +| consumer | `src.code_path_audit.add_field_access` | `src\code_path_audit.py` | +| consumer | `src.command_palette.register` | `src\command_palette.py` | +| consumer | `src.project_manager.branch_discussion` | `src\project_manager.py` | +| consumer | `src.summarize.summarise_file` | `src\summarize.py` | +| consumer | `src.models.mark_blocked` | `src\models.py` | +| consumer | `src.mcp_client.py_set_var_declaration_result` | `src\mcp_client.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.app_controller.approve_ticket` | `src\app_controller.py` | +| consumer | `src.ai_client.run_discussion_compression` | `src\ai_client.py` | +| consumer | `src.command_palette._is_subsequence` | `src\command_palette.py` | +| consumer | `src.file_cache.__init__` | `src\file_cache.py` | +| consumer | `src.app_controller.__init__` | `src\app_controller.py` | +| consumer | `src.paths.get_tracks_dir` | `src\paths.py` | +| consumer | `src.theme_2.get_role_tint` | `src\theme_2.py` | +| consumer | `src.app_controller._do_project_switch` | `src\app_controller.py` | +| consumer | `src.patch_modal.apply_patch` | `src\patch_modal.py` | +| consumer | `src.thinking_parser.parse_thinking_trace` | `src\thinking_parser.py` | +| consumer | `src.app_controller._handle_show_track_proposal` | `src\app_controller.py` | +| consumer | `src.app_controller.load_context_preset` | `src\app_controller.py` | +| consumer | `src.ai_client._run_tier4_patch_callback_result` | `src\ai_client.py` | +| consumer | `src.code_path_audit_ssdl.detect_nil_check_pattern` | `src\code_path_audit_ssdl.py` | +| consumer | `src.mcp_client.py_get_imports_result` | `src\mcp_client.py` | +| consumer | `src.markdown_helper.render_unindented` | `src\markdown_helper.py` | +| consumer | `src.ai_client._set_tool_preset_result` | `src\ai_client.py` | +| consumer | `src.app_controller._handle_set_value` | `src\app_controller.py` | +| consumer | `src.code_path_audit_ssdl.count_branches_in_function` | `src\code_path_audit_ssdl.py` | +| consumer | `src.tool_presets.save_bias_profile` | `src\tool_presets.py` | +| consumer | `src.app_controller.parse_symbols` | `src\app_controller.py` | +| consumer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| consumer | `src.ai_client._run_tier4_analysis_result` | `src\ai_client.py` | +| consumer | `src.multi_agent_conductor.confirm_spawn` | `src\multi_agent_conductor.py` | +| consumer | `src.imgui_scopes.child` | `src\imgui_scopes.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.resolve_paths` | `src\aggregate.py` | +| consumer | `src.app_controller.inject_context` | `src\app_controller.py` | +| consumer | `src.mcp_client.ts_c_get_code_outline` | `src\mcp_client.py` | +| consumer | `src.mcp_client.py_get_definition` | `src\mcp_client.py` | +| consumer | `src.mcp_client.set_file_slice` | `src\mcp_client.py` | +| consumer | `src.models.get` | `src\models.py` | +| consumer | `src.mcp_client.search_files_result` | `src\mcp_client.py` | +| consumer | `src.ai_client._extract_minimax_reasoning` | `src\ai_client.py` | +| consumer | `src.mcp_client.py_update_definition` | `src\mcp_client.py` | +| consumer | `src.mcp_client.find_in_scope` | `src\mcp_client.py` | +| consumer | `src.code_path_audit._atom` | `src\code_path_audit.py` | +| consumer | `src.commands.register` | `src\commands.py` | +| consumer | `src.mcp_client.handle_data` | `src\mcp_client.py` | +| consumer | `src.theme_2.set_brightness` | `src\theme_2.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.rag_engine.__init__` | `src\rag_engine.py` | +| consumer | `src.app_controller._cb_start_track` | `src\app_controller.py` | +| consumer | `src.code_path_audit_ssdl._resolve_filepath` | `src\code_path_audit_ssdl.py` | +| consumer | `src.workspace_manager._save_file` | `src\workspace_manager.py` | +| consumer | `src.app_controller._append_tool_log` | `src\app_controller.py` | +| consumer | `src.mcp_client.ts_cpp_get_code_outline_result` | `src\mcp_client.py` | +| consumer | `src.diff_viewer.get_line_color` | `src\diff_viewer.py` | +| consumer | `src.app_controller._cb_delete_persona` | `src\app_controller.py` | +| consumer | `src.context_presets.save_preset` | `src\context_presets.py` | +| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._test_callback_func_write_to_file` | `src\app_controller.py` | +| consumer | `src.external_editor.create_temp_modified_file` | `src\external_editor.py` | +| consumer | `src.commands.__getattr__` | `src\commands.py` | +| consumer | `src.events.emit` | `src\events.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client._get_symbol_node` | `src\mcp_client.py` | +| consumer | `src.summary_cache.get_file_hash` | `src\summary_cache.py` | +| consumer | `src.app_controller._apply_preset` | `src\app_controller.py` | +| consumer | `src.app_controller._resolve_log_ref` | `src\app_controller.py` | +| consumer | `src.openai_compatible._send_streaming` | `src\openai_compatible.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.app_controller._list_models_for_provider_result` | `src\app_controller.py` | +| consumer | `src.app_controller._cb_ticket_retry` | `src\app_controller.py` | +| consumer | `src.project_manager.load_track_state` | `src\project_manager.py` | +| consumer | `src.file_cache.walk` | `src\file_cache.py` | +| consumer | `src.command_palette._count_gaps` | `src\command_palette.py` | +| consumer | `src.mcp_client.web_search_result` | `src\mcp_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.mcp_client.py_get_code_outline` | `src\mcp_client.py` | +| consumer | `src.app_controller._handle_custom_callback` | `src\app_controller.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.gemini_cli_adapter.send` | `src\gemini_cli_adapter.py` | +| consumer | `src.theme_2.get_color` | `src\theme_2.py` | +| consumer | `src.diff_viewer.parse_diff` | `src\diff_viewer.py` | +| consumer | `src.log_registry.__getitem__` | `src\log_registry.py` | +| consumer | `src.app_controller.kill_worker` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_signature` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.build_pcg` | `src\code_path_audit.py` | +| consumer | `src.app_controller._handle_set_mma_status` | `src\app_controller.py` | +| consumer | `src.api_hooks._parse_float_result` | `src\api_hooks.py` | +| consumer | `src.mcp_client.py_get_docstring` | `src\mcp_client.py` | +| consumer | `src.api_hook_client.kill_mma_worker` | `src\api_hook_client.py` | +| consumer | `src.ai_client._classify_anthropic_error` | `src\ai_client.py` | +| consumer | `src.app_controller.resolve_pending_action` | `src\app_controller.py` | +| consumer | `src.external_editor.build_diff_command` | `src\external_editor.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.app_controller._record_startup_timeline_error` | `src\app_controller.py` | +| consumer | `src.rag_engine.add_documents` | `src\rag_engine.py` | +| consumer | `src.history.jump_to_undo` | `src\history.py` | +| consumer | `src.mcp_client.derive_code_path_result` | `src\mcp_client.py` | +| consumer | `src.app_controller._on_api_event` | `src\app_controller.py` | +| consumer | `src.project_manager.default_project` | `src\project_manager.py` | +| consumer | `src.mcp_client.get_file_slice_result` | `src\mcp_client.py` | +| consumer | `src.rag_engine._get_file_mtime_result` | `src\rag_engine.py` | +| consumer | `src.app_controller._api_delete_session` | `src\app_controller.py` | +| consumer | `src.code_path_audit_ssdl.render_ssdl_rollup` | `src\code_path_audit_ssdl.py` | +| consumer | `src.theme_2.reset_tone_mapping` | `src\theme_2.py` | +| consumer | `src.ai_client._should_cache_gemini_result` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.command_palette._is_contiguous` | `src\command_palette.py` | +| consumer | `src.warmup._record_success` | `src\warmup.py` | +| consumer | `src.api_hooks._set_app_attr` | `src\api_hooks.py` | +| consumer | `src.app_controller._handle_clear_ask` | `src\app_controller.py` | +| consumer | `src.app_controller.rag_mcp_server` | `src\app_controller.py` | +| consumer | `src.ai_client.set_base_system_prompt` | `src\ai_client.py` | +| consumer | `src.ai_client._set_minimax_provider_result` | `src\ai_client.py` | +| consumer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| consumer | `src.app_controller._fetch_models` | `src\app_controller.py` | +| consumer | `src.ai_client._count_gemini_tokens_for_stats_result` | `src\ai_client.py` | +| consumer | `src.gui_2._cb_kill_ticket` | `src\gui_2.py` | +| consumer | `src.multi_agent_conductor._count_tokens` | `src\multi_agent_conductor.py` | +| consumer | `src.warmup._log_stderr` | `src\warmup.py` | +| consumer | `src.gui_2._ticket_id_max_int_result` | `src\gui_2.py` | +| consumer | `src.ai_client.run_with_tool_loop` | `src\ai_client.py` | +| consumer | `src.api_hook_client.get_text_value` | `src\api_hook_client.py` | +| consumer | `src.ai_client.set_project_context_marker` | `src\ai_client.py` | +| consumer | `src.log_registry.from_dict` | `src\log_registry.py` | +| consumer | `src.file_cache.get_targeted_view` | `src\file_cache.py` | +| consumer | `src.markdown_helper.render` | `src\markdown_helper.py` | +| consumer | `src.markdown_table._split_row` | `src\markdown_table.py` | +| consumer | `src.code_path_audit_cross_audit._all_function_refs` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.theme_nerv_fx.update` | `src\theme_nerv_fx.py` | +| consumer | `src.api_hooks_helpers._get_app_attr` | `src\api_hooks_helpers.py` | +| consumer | `src.tool_presets.delete_preset` | `src\tool_presets.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.mcp_client.edit_file_result` | `src\mcp_client.py` | +| consumer | `src.app_controller.current_model` | `src\app_controller.py` | +| consumer | `src.app_controller.confirm_action` | `src\app_controller.py` | +| consumer | `src.beads_client._write_beads` | `src\beads_client.py` | +| consumer | `src.outline_tool.outline` | `src\outline_tool.py` | +| consumer | `src.summarize._summarise_markdown` | `src\summarize.py` | +| consumer | `src.gui_2._test_callback_func_write_to_file` | `src\gui_2.py` | +| consumer | `src.diff_viewer.parse_hunk_header` | `src\diff_viewer.py` | +| consumer | `src.app_controller._cb_ticket_skip` | `src\app_controller.py` | +| consumer | `src.file_cache.get_skeleton` | `src\file_cache.py` | +| consumer | `src.mcp_client._ast_get_definition` | `src\mcp_client.py` | +| consumer | `src.app_controller._api_get_key` | `src\app_controller.py` | +| consumer | `src.rag_engine.delete_documents_by_path` | `src\rag_engine.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.vendor_capabilities.list_models_for_vendor` | `src\vendor_capabilities.py` | +| consumer | `src.fuzzy_anchor.resolve_slice` | `src\fuzzy_anchor.py` | +| consumer | `src.markdown_helper.render` | `src\markdown_helper.py` | +| consumer | `src.app_controller._handle_drag` | `src\app_controller.py` | +| consumer | `src.rag_engine.search` | `src\rag_engine.py` | +| consumer | `src.markdown_helper._on_open_link` | `src\markdown_helper.py` | +| consumer | `src.cost_tracker.estimate_cost` | `src\cost_tracker.py` | +| consumer | `src.mcp_client.py_get_code_outline_result` | `src\mcp_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.performance_monitor.scope` | `src\performance_monitor.py` | +| consumer | `src.app_controller._rag_search_result` | `src\app_controller.py` | +| consumer | `src.models.__getattr__` | `src\models.py` | +| consumer | `src.session_logger.log_comms` | `src\session_logger.py` | +| consumer | `src.code_path_audit_ssdl.compute_effective_codepaths` | `src\code_path_audit_ssdl.py` | +| consumer | `src.code_path_audit.dominant_pattern` | `src\code_path_audit.py` | +| consumer | `src.paths.get_track_state_dir` | `src\paths.py` | +| consumer | `src.mcp_client.configure` | `src\mcp_client.py` | +| consumer | `src.theme_2.apply_syntax_palette` | `src\theme_2.py` | +| consumer | `src.startup_profiler.phase` | `src\startup_profiler.py` | +| consumer | `src.app_controller._deserialize_active_track_result` | `src\app_controller.py` | +| consumer | `src.log_pruner.__init__` | `src\log_pruner.py` | +| consumer | `src.rag_engine._chunk_text` | `src\rag_engine.py` | +| consumer | `src.file_cache.deep_search` | `src\file_cache.py` | +| consumer | `src.app_controller.rag_source` | `src\app_controller.py` | +| consumer | `src.markdown_table.parse_tables` | `src\markdown_table.py` | +| consumer | `src.gui_2._load_fonts_main_result` | `src\gui_2.py` | +| consumer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| consumer | `src.aggregate.build_discussion_section` | `src\aggregate.py` | +| consumer | `src.gui_2._on_warmup_complete_callback_result` | `src\gui_2.py` | +| consumer | `src.app_controller.start_services` | `src\app_controller.py` | +| consumer | `src.api_hook_client.spawn_mma_worker` | `src\api_hook_client.py` | +| consumer | `src.code_path_audit.P2_pass` | `src\code_path_audit.py` | +| consumer | `src.imgui_scopes.window` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client.web_search` | `src\mcp_client.py` | +| consumer | `src.log_registry.get` | `src\log_registry.py` | +| consumer | `src.code_path_audit.detect_frequency_from_entry_point` | `src\code_path_audit.py` | +| consumer | `src.commands._toggle_attr` | `src\commands.py` | +| consumer | `src.mcp_client.handle_starttag` | `src\mcp_client.py` | +| consumer | `src.gui_2.render_thinking_trace` | `src\gui_2.py` | +| consumer | `src.api_hooks.__init__` | `src\api_hooks.py` | +| consumer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| consumer | `src.conductor_tech_lead.generate_tickets` | `src\conductor_tech_lead.py` | +| consumer | `src.gui_2.__getattr__` | `src\gui_2.py` | +| consumer | `src.app_controller._handle_select_list_item` | `src\app_controller.py` | +| consumer | `src.theme_models.from_dict` | `src\theme_models.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.session_logger.reset_session` | `src\session_logger.py` | +| consumer | `src.personas._save_file` | `src\personas.py` | +| consumer | `src.code_path_audit_ssdl.render_ssdl_sketch` | `src\code_path_audit_ssdl.py` | +| consumer | `src.file_cache.get_curated_view` | `src\file_cache.py` | +| consumer | `src.tool_presets._write_raw` | `src\tool_presets.py` | +| consumer | `src.file_cache.deep_search` | `src\file_cache.py` | +| consumer | `src.api_hooks_helpers._has_app_attr` | `src\api_hooks_helpers.py` | +| consumer | `src.aggregate.build_screenshots_section` | `src\aggregate.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.imgui_scopes.id` | `src\imgui_scopes.py` | +| consumer | `src.markdown_helper._normalize_list_continuations` | `src\markdown_helper.py` | +| consumer | `src.gemini_cli_adapter.__init__` | `src\gemini_cli_adapter.py` | +| consumer | `src.app_controller._cb_apply_view_preset` | `src\app_controller.py` | +| consumer | `src.history.redo` | `src\history.py` | +| consumer | `src.code_path_audit.compute_result_coverage` | `src\code_path_audit.py` | +| consumer | `src.summary_cache.__init__` | `src\summary_cache.py` | +| consumer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| consumer | `src.app_controller._handle_refresh_from_project` | `src\app_controller.py` | +| consumer | `src.gui_2._set_context_files` | `src\gui_2.py` | +| consumer | `src.theme_2.apply` | `src\theme_2.py` | +| consumer | `src.app_controller._handle_ask` | `src\app_controller.py` | +| consumer | `src.log_registry.set_session_start_time` | `src\log_registry.py` | +| consumer | `src.code_path_audit._resolve_aliases` | `src\code_path_audit.py` | +| consumer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.markdown_table._is_table_at` | `src\markdown_table.py` | +| consumer | `src.ai_client._list_gemini_models_result` | `src\ai_client.py` | +| consumer | `src.code_path_audit.run_audit` | `src\code_path_audit.py` | +| consumer | `src.gui_2.render_text_viewer` | `src\gui_2.py` | +| consumer | `src.mcp_client.get_tree_result` | `src\mcp_client.py` | +| consumer | `src.markdown_helper.render_code` | `src\markdown_helper.py` | +| consumer | `src.mcp_client.ts_cpp_get_definition_result` | `src\mcp_client.py` | +| consumer | `src.file_cache.get_cached_tree` | `src\file_cache.py` | +| consumer | `src.mcp_client.async_dispatch` | `src\mcp_client.py` | +| consumer | `src.app_controller._cb_delete_bias_profile` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_class_summary_result` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.P1_pass` | `src\code_path_audit.py` | +| consumer | `src.session_logger.log_api_hook` | `src\session_logger.py` | +| consumer | `src.code_path_audit_analysis.aggregate_pattern_from_consumers` | `src\code_path_audit_analysis.py` | +| consumer | `src.theme_models.with_scope` | `src\theme_models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.mcp_client.get_file_summary` | `src\mcp_client.py` | +| consumer | `src.imgui_scopes.tab_item` | `src\imgui_scopes.py` | +| consumer | `src.openai_compatible._classify_openai_compatible_error` | `src\openai_compatible.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.app_controller._on_tool_log` | `src\app_controller.py` | +| consumer | `src.personas.get_persona_scope` | `src\personas.py` | +| consumer | `src.file_cache.update_definition` | `src\file_cache.py` | +| consumer | `src.app_controller._cb_load_workspace_profile` | `src\app_controller.py` | +| consumer | `src.code_path_audit.to_dsl_v2` | `src\code_path_audit.py` | +| consumer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| consumer | `src.summarize._summarise_python` | `src\summarize.py` | +| consumer | `src.code_path_audit.compute_decomposition_cost` | `src\code_path_audit.py` | +| consumer | `src.app_controller.__getattr__` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_skeleton_result` | `src\mcp_client.py` | +| consumer | `src.mcp_client.handle_data` | `src\mcp_client.py` | +| consumer | `src.file_cache.get_definition` | `src\file_cache.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client._ast_get_signature` | `src\mcp_client.py` | +| consumer | `src.file_cache._get_mtime_safe` | `src\file_cache.py` | +| consumer | `src.code_path_audit_analysis.analyze_producer_size` | `src\code_path_audit_analysis.py` | +| consumer | `src.imgui_scopes.table` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client.get_tree` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.code_path_audit_v2` | `src\code_path_audit.py` | +| consumer | `src.code_path_audit_cross_audit._aggregate_for_fqname` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.project_manager.clean_nones` | `src\project_manager.py` | +| consumer | `src.mcp_client.py_set_signature` | `src\mcp_client.py` | +| consumer | `src.ai_client.set_custom_system_prompt` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.gui_2.__setattr__` | `src\gui_2.py` | +| consumer | `src.models._clean_nones` | `src\models.py` | +| consumer | `src.markdown_helper.detect_language` | `src\markdown_helper.py` | +| consumer | `src.mcp_client.fetch_url` | `src\mcp_client.py` | +| consumer | `src.mcp_client.handle_endtag` | `src\mcp_client.py` | +| consumer | `src.performance_monitor._add_to_history` | `src\performance_monitor.py` | +| consumer | `src.project_manager.promote_take` | `src\project_manager.py` | +| consumer | `src.project_manager.save_track_state` | `src\project_manager.py` | +| consumer | `src.app_controller._init_ai_and_hooks` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_docstring_result` | `src\mcp_client.py` | +| consumer | `src.outline_tool.get_outline` | `src\outline_tool.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.models.parse_history_entries` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| consumer | `src.mcp_client.set_file_slice_result` | `src\mcp_client.py` | +| consumer | `src.api_hook_client.request_confirmation` | `src\api_hook_client.py` | +| consumer | `src.code_path_audit_analysis.compute_real_decomposition_cost` | `src\code_path_audit_analysis.py` | +| consumer | `src.ai_client._classify_deepseek_error` | `src\ai_client.py` | +| consumer | `src.app_controller._report_worker_error` | `src\app_controller.py` | +| consumer | `src.paths.get_conductor_dir` | `src\paths.py` | +| consumer | `src.events.put` | `src\events.py` | +| consumer | `src.hot_reloader.capture_state` | `src\hot_reloader.py` | +| consumer | `src.gui_2.__init__` | `src\gui_2.py` | +| consumer | `src.gui_2.render_discussion_entry` | `src\gui_2.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.code_path_audit.parse_dsl_v2` | `src\code_path_audit.py` | +| consumer | `src.app_controller._handle_ticket_completed` | `src\app_controller.py` | +| consumer | `src.app_controller._cb_create_track` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_check_syntax` | `src\mcp_client.py` | +| consumer | `src.mcp_client.edit_file` | `src\mcp_client.py` | +| consumer | `src.app_controller._confirm_and_run` | `src\app_controller.py` | +| consumer | `src.project_manager.parse_ts` | `src\project_manager.py` | +| consumer | `src.startup_profiler._log_phase_output` | `src\startup_profiler.py` | +| consumer | `src.app_controller._set_mcp_config_json_result` | `src\app_controller.py` | +| consumer | `src.app_controller.get_api_key` | `src\app_controller.py` | +| consumer | `src.mcp_client._ast_get_skeleton` | `src\mcp_client.py` | +| consumer | `src.code_path_audit_analysis.estimate_struct_size` | `src\code_path_audit_analysis.py` | +| consumer | `src.code_path_audit.run_all_cross_audit_reads` | `src\code_path_audit.py` | +| consumer | `src.imgui_scopes.popup_modal` | `src\imgui_scopes.py` | +| consumer | `src.app_controller.mcp_config_json` | `src\app_controller.py` | +| consumer | `src.app_controller._handle_set_ai_status` | `src\app_controller.py` | +| consumer | `src.app_controller._handle_mma_stream` | `src\app_controller.py` | +| consumer | `src.mcp_client._ast_get_code_outline` | `src\mcp_client.py` | +| consumer | `src.vendor_capabilities.get_capabilities` | `src\vendor_capabilities.py` | +| consumer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| consumer | `src.multi_agent_conductor.kill_worker` | `src\multi_agent_conductor.py` | +| consumer | `src.api_hook_client.inject_context` | `src\api_hook_client.py` | +| consumer | `src.imgui_scopes.node` | `src\imgui_scopes.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.app_controller.post_api_session` | `src\app_controller.py` | +| consumer | `src.mcp_client.dispatch` | `src\mcp_client.py` | +| consumer | `src.session_logger.log_tool_output` | `src\session_logger.py` | +| consumer | `src.app_controller._cb_save_bias_profile` | `src\app_controller.py` | +| consumer | `src.ai_client.set_provider` | `src\ai_client.py` | +| consumer | `src.code_path_audit.add_producer` | `src\code_path_audit.py` | +| consumer | `src.app_controller._on_performance_alert` | `src\app_controller.py` | +| consumer | `src.file_cache.get_code_outline` | `src\file_cache.py` | +| consumer | `src.file_cache.parse` | `src\file_cache.py` | +| consumer | `src.gui_2._render_ast_inspector_outline_result` | `src\gui_2.py` | +| consumer | `src.log_registry.__init__` | `src\log_registry.py` | +| consumer | `src.rag_engine._read_file_content_result` | `src\rag_engine.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.api_hook_client.__init__` | `src\api_hook_client.py` | +| consumer | `src.hot_reloader.reload` | `src\hot_reloader.py` | +| consumer | `src.mcp_client.get_git_diff` | `src\mcp_client.py` | +| consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.rag_engine.__init__` | `src\rag_engine.py` | +| consumer | `src.summary_cache.get_summary` | `src\summary_cache.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | +| consumer | `src.file_cache.get_signature` | `src\file_cache.py` | +| consumer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| consumer | `src.mcp_client.ts_cpp_get_code_outline` | `src\mcp_client.py` | +| consumer | `src.mcp_client.ts_c_update_definition` | `src\mcp_client.py` | +| consumer | `src.app_controller._handle_refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.multi_agent_conductor._push_state` | `src\multi_agent_conductor.py` | +| consumer | `src.ai_client._truncate_tool_output` | `src\ai_client.py` | +| consumer | `src.gui_2.render_tier_stream_panel` | `src\gui_2.py` | +| consumer | `src.mcp_client._build_tree` | `src\mcp_client.py` | +| consumer | `src.api_hook_client.get_indicator_state` | `src\api_hook_client.py` | +| consumer | `src.personas._get_path` | `src\personas.py` | +| consumer | `src.app_controller._on_warmup_complete_for_timeline` | `src\app_controller.py` | +| consumer | `src.project_manager.get_git_commit` | `src\project_manager.py` | +| consumer | `src.mcp_client.py_get_signature_result` | `src\mcp_client.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.app_controller.set_vendor_quota` | `src\app_controller.py` | +| consumer | `src.mcp_client.py_get_skeleton` | `src\mcp_client.py` | +| consumer | `src.events.on` | `src\events.py` | +| consumer | `src.mcp_client.py_get_var_declaration` | `src\mcp_client.py` | +| consumer | `src.app_controller._switch_project` | `src\app_controller.py` | +| consumer | `src.thinking_parser.extract_colon_blocks` | `src\thinking_parser.py` | +| consumer | `src.performance_monitor.start_component` | `src\performance_monitor.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.mcp_client.py_find_usages_result` | `src\mcp_client.py` | +| consumer | `src.app_controller._load_project_from_path_result` | `src\app_controller.py` | +| consumer | `src.qwen_adapter.build_dashscope_tools` | `src\qwen_adapter.py` | +| consumer | `src.ai_client._execute_tool_calls_concurrently` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.gui_2._save_context_preset_force` | `src\gui_2.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.command_palette._execute` | `src\command_palette.py` | +| consumer | `src.models.mark_manual_block` | `src\models.py` | +| consumer | `src.gui_2._set_external_editor_default` | `src\gui_2.py` | +| consumer | `src.personas.delete_persona` | `src\personas.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| consumer | `src.multi_agent_conductor.parse_json_tickets` | `src\multi_agent_conductor.py` | +| consumer | `src.theme_2.render_post_fx` | `src\theme_2.py` | +| consumer | `src.dag_engine.update_task_status` | `src\dag_engine.py` | +| consumer | `src.app_controller._on_sigint` | `src\app_controller.py` | +| consumer | `src.ai_client.set_tool_preset` | `src\ai_client.py` | +| consumer | `src.openai_compatible._send_blocking` | `src\openai_compatible.py` | +| consumer | `src.aggregate.find_next_increment` | `src\aggregate.py` | +| consumer | `src.gui_2.render_heavy_text` | `src\gui_2.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.multi_agent_conductor.clutch_callback` | `src\multi_agent_conductor.py` | +| consumer | `src.gui_2.__init__` | `src\gui_2.py` | +| consumer | `src.hot_reloader.restore_state` | `src\hot_reloader.py` | +| consumer | `src.api_hook_client.get_value` | `src\api_hook_client.py` | +| consumer | `src.summarize._summarise_toml` | `src\summarize.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.app_controller._switch_discussion` | `src\app_controller.py` | +| consumer | `src.mcp_client._send_request` | `src\mcp_client.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.app_controller._handle_right_click` | `src\app_controller.py` | +| consumer | `src.app_controller._handle_show_patch_modal` | `src\app_controller.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.theme_models.load_themes_from_toml` | `src\theme_models.py` | +| consumer | `src.app_controller._cb_delete_view_preset` | `src\app_controller.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.app_controller.get_session` | `src\app_controller.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.mcp_client.get_git_diff_result` | `src\mcp_client.py` | +| consumer | `src.api_hooks.log_message` | `src\api_hooks.py` | +| consumer | `src.theme_2.save_to_config` | `src\theme_2.py` | +| consumer | `src.warmup._fire_callback` | `src\warmup.py` | +| consumer | `src.performance_monitor._get_avg` | `src\performance_monitor.py` | +| consumer | `src.mcp_client.ts_cpp_update_definition_result` | `src\mcp_client.py` | +| consumer | `src.app_controller.rag_mcp_tool` | `src\app_controller.py` | +| consumer | `src.mcp_client.ts_c_get_skeleton_result` | `src\mcp_client.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.app_controller._cb_delete_workspace_profile` | `src\app_controller.py` | +| consumer | `src.gui_2._cb_block_ticket` | `src\gui_2.py` | +| consumer | `src.mcp_client._resolve_and_check_result` | `src\mcp_client.py` | +| consumer | `src.mcp_client.ts_c_get_definition` | `src\mcp_client.py` | +| consumer | `src.code_path_audit.load_memory_dim_overrides` | `src\code_path_audit.py` | +| consumer | `src.gui_2._render_window_if_open` | `src\gui_2.py` | +| consumer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| consumer | `src.mcp_client.ts_c_get_signature` | `src\mcp_client.py` | +| consumer | `src.performance_monitor.end_component` | `src\performance_monitor.py` | +| consumer | `src.api_hooks._has_app_attr` | `src\api_hooks.py` | +| consumer | `src.markdown_helper._is_likely_lang_tag` | `src\markdown_helper.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.openai_compatible._to_typed_tool_call` | `src\openai_compatible.py` | +| consumer | `src.code_path_audit.add_consumer` | `src\code_path_audit.py` | +| consumer | `src.ai_client.run_subagent_summarization` | `src\ai_client.py` | +| consumer | `src.hot_reloader.reload_all` | `src\hot_reloader.py` | +| consumer | `src.api_hooks_helpers._set_app_attr` | `src\api_hooks_helpers.py` | +| consumer | `src.mcp_client.py_get_definition_result` | `src\mcp_client.py` | +| consumer | `src.gui_2._populate_auto_slices_outline_result` | `src\gui_2.py` | +| consumer | `src.ai_client._list_minimax_models_result` | `src\ai_client.py` | +| consumer | `src.mcp_client.list_directory` | `src\mcp_client.py` | +| consumer | `src.multi_agent_conductor.run_worker_lifecycle` | `src\multi_agent_conductor.py` | +| consumer | `src.mcp_client.ts_cpp_get_skeleton_result` | `src\mcp_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.performance_monitor.__exit__` | `src\performance_monitor.py` | +| consumer | `src.theme_2._get_tm` | `src\theme_2.py` | +| consumer | `src.synthesis_formatter.format_takes_diff` | `src\synthesis_formatter.py` | +| consumer | `src.openai_compatible.send_openai_compatible` | `src\openai_compatible.py` | +| consumer | `src.ai_client._try_warm_sdk_result` | `src\ai_client.py` | +| consumer | `src.ai_client._set_bias_profile_result` | `src\ai_client.py` | +| consumer | `src.theme_2._tone_map` | `src\theme_2.py` | +| consumer | `src.markdown_helper._get_language_id` | `src\markdown_helper.py` | +| consumer | `src.fuzzy_anchor.get_context` | `src\fuzzy_anchor.py` | +| consumer | `src.gui_2.render_selectable_label` | `src\gui_2.py` | +| consumer | `src.history.from_dict` | `src\history.py` | +| consumer | `src.app_controller._handle_mma_respond` | `src\app_controller.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client.handle_endtag` | `src\mcp_client.py` | +| consumer | `src.patch_modal.request_patch_approval` | `src\patch_modal.py` | +| consumer | `src.code_path_audit_analysis._field_names_for_aggregate` | `src\code_path_audit_analysis.py` | +| consumer | `src.code_path_audit_analysis._analyze_function_field_accesses` | `src\code_path_audit_analysis.py` | +| consumer | `src.summarize._summarise_generic` | `src\summarize.py` | +| consumer | `src.code_path_audit.generate_rationale` | `src\code_path_audit.py` | +| consumer | `src.summarize.summarise_items` | `src\summarize.py` | +| consumer | `src.file_cache.deep_search` | `src\file_cache.py` | +| consumer | `src.provider_state.get_history` | `src\provider_state.py` | +| consumer | `src.session_logger.log_cli_call` | `src\session_logger.py` | +| consumer | `src.log_registry.update_session_metadata` | `src\log_registry.py` | +| consumer | `src.app_controller._api_post_api_session` | `src\app_controller.py` | +| consumer | `src.code_path_audit_ssdl.suggest_defusing_technique` | `src\code_path_audit_ssdl.py` | +| consumer | `src.gemini_cli_adapter.count_tokens` | `src\gemini_cli_adapter.py` | +| consumer | `src.gui_2._cb_unblock_ticket` | `src\gui_2.py` | +| consumer | `src.theme_models.load_themes_from_dir` | `src\theme_models.py` | +| consumer | `src.external_editor.get_editor` | `src\external_editor.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.ai_client._classify_gemini_error` | `src\ai_client.py` | +| consumer | `src.app_controller._execute_gui_task_result` | `src\app_controller.py` | +| consumer | `src.gui_2.request_patch_from_tier4_result` | `src\gui_2.py` | +| consumer | `src.imgui_scopes.popup` | `src\imgui_scopes.py` | +| consumer | `src.multi_agent_conductor.spawn` | `src\multi_agent_conductor.py` | +| consumer | `src.app_controller._handle_ticket_started` | `src\app_controller.py` | +| consumer | `src.project_manager.load_track_history` | `src\project_manager.py` | +| consumer | `src.ai_client._get_gemini_history_list` | `src\ai_client.py` | +| consumer | `src.command_palette._starts_at_word_boundary` | `src\command_palette.py` | +| consumer | `src.mcp_client.py_find_usages` | `src\mcp_client.py` | +| consumer | `src.multi_agent_conductor.run` | `src\multi_agent_conductor.py` | +| consumer | `src.mcp_client.ts_c_update_definition_result` | `src\mcp_client.py` | +| consumer | `src.theme_models.load_theme_file` | `src\theme_models.py` | +| consumer | `src.app_controller.post_gui` | `src\app_controller.py` | +| consumer | `src.log_registry.register_session` | `src\log_registry.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.gui_2.load_context_preset` | `src\gui_2.py` | +| consumer | `src.mcp_client.py_get_class_summary` | `src\mcp_client.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | +| consumer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| consumer | `src.performance_monitor.__init__` | `src\performance_monitor.py` | +| consumer | `src.app_controller._cb_load_track` | `src\app_controller.py` | +| consumer | `src.warmup._log_canary` | `src\warmup.py` | +| consumer | `src.app_controller._cb_save_persona` | `src\app_controller.py` | +| consumer | `src.app_controller._parse_token_history_first_ts_result` | `src\app_controller.py` | +| consumer | `src.code_path_audit_cross_audit._file_to_aggregates` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.gui_2.current_provider` | `src\gui_2.py` | +| consumer | `src.dag_engine.approve_task` | `src\dag_engine.py` | +| consumer | `src.api_hooks._serialize_for_api` | `src\api_hooks.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.code_path_audit_cross_audit.build_cross_audit_findings_for_aggregate` | `src\code_path_audit_cross_audit.py` | +| consumer | `src.rag_engine._search_mcp` | `src\rag_engine.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.mcp_client.call_tool` | `src\mcp_client.py` | +| consumer | `src.theme_2.get_syntax_palette_for_theme` | `src\theme_2.py` | +| consumer | `src.mcp_client.ts_c_get_definition_result` | `src\mcp_client.py` | +| consumer | `src.app_controller.rag_collection_name` | `src\app_controller.py` | +| consumer | `src.thinking_parser.extract_tags` | `src\thinking_parser.py` | +| consumer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| consumer | `src.app_controller._handle_set_comms_dirty` | `src\app_controller.py` | +| consumer | `src.multi_agent_conductor.stream_callback` | `src\multi_agent_conductor.py` | +| consumer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| consumer | `src.workspace_manager._get_path` | `src\workspace_manager.py` | +| consumer | `src.gui_2._capture_workspace_profile` | `src\gui_2.py` | +| consumer | `src.gui_2.cb_load_prior_log` | `src\gui_2.py` | +| consumer | `src.gui_2.request_patch_from_tier4` | `src\gui_2.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.app_controller.ai_status` | `src\app_controller.py` | +| consumer | `src.app_controller._cb_new_project_automated` | `src\app_controller.py` | +| consumer | `src.mcp_client.ts_cpp_get_skeleton` | `src\mcp_client.py` | +| consumer | `src.ai_client._chunk_text` | `src\ai_client.py` | +| consumer | `src.app_controller._handle_mma_spawn_approval` | `src\app_controller.py` | +| consumer | `src.app_controller._handle_bead_updated` | `src\app_controller.py` | +| consumer | `src.tool_presets.save_preset` | `src\tool_presets.py` | +| consumer | `src.workspace_manager.save_profile` | `src\workspace_manager.py` | +| consumer | `src.code_path_audit_analysis.extract_real_optimization_candidates` | `src\code_path_audit_analysis.py` | +| consumer | `src.imgui_scopes.__init__` | `src\imgui_scopes.py` | +| consumer | `src.mcp_client.get_file_summary_result` | `src\mcp_client.py` | +| consumer | `src.mcp_client.ts_cpp_get_definition` | `src\mcp_client.py` | +| consumer | `src.ai_client._run_tier4_patch_generation_result` | `src\ai_client.py` | +| consumer | `src.code_path_audit_analysis.analyze_consumer_fields` | `src\code_path_audit_analysis.py` | +| consumer | `src.diff_viewer.apply_patch_to_file` | `src\diff_viewer.py` | +| consumer | `src.gui_2.__getattr__` | `src\gui_2.py` | +| consumer | `src.multi_agent_conductor._queue_put` | `src\multi_agent_conductor.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.paths._resolve_path` | `src\paths.py` | +| consumer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| consumer | `src.command_palette.get` | `src\command_palette.py` | +| consumer | `src.code_path_audit.find_enclosing_function` | `src\code_path_audit.py` | +| consumer | `src.app_controller._handle_ai_response` | `src\app_controller.py` | + +## FileItem (117 producers + 66 consumers) + +| role | fqname | file | +|---|---|---| +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | | producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | | producer | `src.models.to_dict` | `src\models.py` | | producer | `src.models.to_dict` | `src\models.py` | | producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | -| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | | producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | | producer | `src.models.to_dict` | `src\models.py` | -| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | | producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | -| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.aggregate.build_file_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | | producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | -| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | -| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | -| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | -| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | | consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | -| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | | consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | | consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | | consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | | consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | | consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | -| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | | consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | -| consumer | `src.aggregate.run` | `src\aggregate.py` | -| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | -| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | -| consumer | `src.project_manager.save_project` | `src\project_manager.py` | -| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | -| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | -| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | -| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | -| consumer | `src.ai_client.send` | `src\ai_client.py` | -| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | -| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | | consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | -| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | -| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.models._save_config_to_disk` | `src\models.py` | -| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | -| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | -| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | -| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | -| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | -| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | -| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | -| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | -| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | -| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | -| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | -## FileItem (0 producers + 0 consumers) - -_(no producers or consumers)_ - -## FileItems (0 producers + 4 consumers) +## FileItems (6 producers + 9 consumers) | role | fqname | file | |---|---|---| -| consumer | `src.ai_client._build_file_diff_text` | `src\ai_client.py` | -| consumer | `src.ai_client.run_with_tool_loop` | `src\ai_client.py` | +| producer | `src.gui_2._render_beads_tab_list_result` | `src\gui_2.py` | +| producer | `src.gui_2._drain_normalize_errors` | `src\gui_2.py` | +| producer | `src.ai_client._list_gemini_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._list_anthropic_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._list_minimax_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._set_minimax_provider_result` | `src\ai_client.py` | +| consumer | `src.app_controller._symbol_resolution_result` | `src\app_controller.py` | +| consumer | `src.app_controller._topological_sort_tickets_result` | `src\app_controller.py` | | consumer | `src.ai_client._build_file_context_text` | `src\ai_client.py` | | consumer | `src.ai_client._reread_file_items_result` | `src\ai_client.py` | +| consumer | `src.ai_client._build_file_diff_text` | `src\ai_client.py` | +| consumer | `src.gui_2.__init__` | `src\gui_2.py` | +| consumer | `src.app_controller._serialize_tool_calls_result` | `src\app_controller.py` | +| consumer | `src.project_manager.calculate_track_progress` | `src\project_manager.py` | +| consumer | `src.ai_client.run_with_tool_loop` | `src\ai_client.py` | -## CommsLogEntry (0 producers + 0 consumers) - -_(no producers or consumers)_ - -## CommsLog (0 producers + 0 consumers) - -_(no producers or consumers)_ - -## HistoryMessage (1 producers + 2 consumers) +## CommsLogEntry (117 producers + 66 consumers) | role | fqname | file | |---|---|---| +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | +| producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.aggregate.build_file_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | +| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | + +## CommsLog (6 producers + 5 consumers) + +| role | fqname | file | +|---|---|---| +| producer | `src.gui_2._render_beads_tab_list_result` | `src\gui_2.py` | +| producer | `src.gui_2._drain_normalize_errors` | `src\gui_2.py` | +| producer | `src.ai_client._list_gemini_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._list_anthropic_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._list_minimax_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._set_minimax_provider_result` | `src\ai_client.py` | +| consumer | `src.app_controller._symbol_resolution_result` | `src\app_controller.py` | +| consumer | `src.app_controller._topological_sort_tickets_result` | `src\app_controller.py` | +| consumer | `src.gui_2.__init__` | `src\gui_2.py` | +| consumer | `src.app_controller._serialize_tool_calls_result` | `src\app_controller.py` | +| consumer | `src.project_manager.calculate_track_progress` | `src\project_manager.py` | + +## HistoryMessage (118 producers + 68 consumers) + +| role | fqname | file | +|---|---|---| +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | +| producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | | producer | `src.provider_state.get_all` | `src\provider_state.py` | +| producer | `src.aggregate.build_file_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | | consumer | `src.provider_state.append` | `src\provider_state.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.provider_state.replace_all` | `src\provider_state.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | +| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | -## History (0 producers + 0 consumers) - -_(no producers or consumers)_ - -## ToolDefinition (2 producers + 0 consumers) +## History (7 producers + 7 consumers) | role | fqname | file | |---|---|---| -| producer | `src.ai_client._build_anthropic_tools` | `src\ai_client.py` | +| producer | `src.gui_2._render_beads_tab_list_result` | `src\gui_2.py` | +| producer | `src.gui_2._drain_normalize_errors` | `src\gui_2.py` | +| producer | `src.ai_client._list_gemini_models_result` | `src\ai_client.py` | +| producer | `src.provider_state.get_all` | `src\provider_state.py` | +| producer | `src.ai_client._list_anthropic_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._list_minimax_models_result` | `src\ai_client.py` | +| producer | `src.ai_client._set_minimax_provider_result` | `src\ai_client.py` | +| consumer | `src.provider_state.append` | `src\provider_state.py` | +| consumer | `src.app_controller._symbol_resolution_result` | `src\app_controller.py` | +| consumer | `src.app_controller._topological_sort_tickets_result` | `src\app_controller.py` | +| consumer | `src.provider_state.replace_all` | `src\provider_state.py` | +| consumer | `src.gui_2.__init__` | `src\gui_2.py` | +| consumer | `src.app_controller._serialize_tool_calls_result` | `src\app_controller.py` | +| consumer | `src.project_manager.calculate_track_progress` | `src\project_manager.py` | + +## ToolDefinition (119 producers + 66 consumers) + +| role | fqname | file | +|---|---|---| +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | | producer | `src.ai_client._build_deepseek_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | +| producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.aggregate.build_file_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.ai_client._build_anthropic_tools` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | +| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | -## ToolCall (1 producers + 1 consumers) +## ToolCall (118 producers + 67 consumers) | role | fqname | file | |---|---|---| +| producer | `src.ai_client._extract_dashscope_tool_calls` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| producer | `src.app_controller._pending_mma_spawn` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.clear_events` | `src\api_hook_client.py` | +| producer | `src.project_manager.get_all_tracks` | `src\project_manager.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.app_controller._api_pending_actions` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | | producer | `src.openai_compatible._to_typed_tool_call` | `src\openai_compatible.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | +| producer | `src.ai_client._build_chunked_context_blocks` | `src\ai_client.py` | +| producer | `src.ai_client._get_anthropic_tools` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client._get_deepseek_tools` | `src\ai_client.py` | +| producer | `src.models.parse_history_entries` | `src\models.py` | +| producer | `src.api_hook_client.get_events` | `src\api_hook_client.py` | +| producer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.trigger_patch` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.aggregate.build_file_items` | `src\aggregate.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_warmup_canaries` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | +| producer | `src.app_controller.pending_actions` | `src\app_controller.py` | +| producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | +| producer | `src.ai_client.get_comms_log` | `src\ai_client.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.get_project_switch_status` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client._make_request` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | +| producer | `src.app_controller._pending_mma_approval` | `src\app_controller.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| producer | `src.models.to_dict` | `src\models.py` | +| producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_session` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | +| consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._create_gemini_cache_result` | `src\ai_client.py` | +| consumer | `src.ai_client._send_grok` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini_cli` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_gemini` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._send_anthropic` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._send_llama` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | +| consumer | `src.ai_client._send_deepseek` | `src\ai_client.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_llama_native` | `src\ai_client.py` | +| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| consumer | `src.ai_client._send_qwen` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | | consumer | `src.openai_compatible._to_dict_tool_call` | `src\openai_compatible.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.aggregate.run` | `src\aggregate.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | +| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | +| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.models.from_dict` | `src\models.py` | +| consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.ai_client._send_minimax` | `src\ai_client.py` | +| consumer | `src.ai_client.send` | `src\ai_client.py` | ## Result (0 producers + 0 consumers) diff --git a/docs/reports/code_path_audit/2026-06-22/cross_audit_summary.md b/docs/reports/code_path_audit/2026-06-22/cross_audit_summary.md index 1f6c81dc..0a6c9e02 100644 --- a/docs/reports/code_path_audit/2026-06-22/cross_audit_summary.md +++ b/docs/reports/code_path_audit/2026-06-22/cross_audit_summary.md @@ -6,7 +6,7 @@ | FileItem | 0 | 0 | 0 | 0 | 0 | 0 | | FileItems | 0 | 0 | 0 | 0 | 0 | 0 | | CommsLogEntry | 0 | 0 | 0 | 0 | 0 | 0 | -| CommsLog | 0 | 0 | 0 | 0 | 0 | 0 | +| CommsLog | 0 | 0 | 1 | 0 | 0 | 1 | | HistoryMessage | 0 | 0 | 0 | 0 | 0 | 0 | | History | 0 | 0 | 0 | 0 | 0 | 0 | | ToolDefinition | 0 | 0 | 1 | 0 | 0 | 1 | diff --git a/docs/reports/code_path_audit/2026-06-22/dead_fields.md b/docs/reports/code_path_audit/2026-06-22/dead_fields.md index 5c102f85..c74b5501 100644 --- a/docs/reports/code_path_audit/2026-06-22/dead_fields.md +++ b/docs/reports/code_path_audit/2026-06-22/dead_fields.md @@ -4,30 +4,66 @@ Fields that appear in producer return shapes but are never read by any consumer. ### `Metadata` -Fields read by at least one consumer: 55 +Fields read by at least one consumer: 53 + + +### `FileItem` + +Fields read by at least one consumer: 43 ### `FileItems` -Fields read by at least one consumer: 1 +Fields read by at least one consumer: 5 | field | read count | |---|---| +| `_attr_name` | 1 | +| `_cached` | 1 | +| `_module_name` | 1 | +| `_report_worker_error` | 1 | | `append` | 2 | +### `CommsLogEntry` + +Fields read by at least one consumer: 43 + + +### `CommsLog` + +Fields read by at least one consumer: 4 + +| field | read count | +|---|---| +| `_attr_name` | 1 | +| `_cached` | 1 | +| `_module_name` | 1 | +| `_report_worker_error` | 1 | + ### `HistoryMessage` -Fields read by at least one consumer: 2 +Fields read by at least one consumer: 45 + + +### `History` + +Fields read by at least one consumer: 6 | field | read count | |---|---| +| `_attr_name` | 1 | +| `_cached` | 1 | +| `_module_name` | 1 | +| `_report_worker_error` | 1 | | `lock` | 2 | | `messages` | 2 | +### `ToolDefinition` + +Fields read by at least one consumer: 43 + + ### `ToolCall` -Fields read by at least one consumer: 1 +Fields read by at least one consumer: 44 -| field | read count | -|---|---| -| `to_dict` | 1 | diff --git a/docs/reports/code_path_audit/2026-06-22/decomposition_matrix.md b/docs/reports/code_path_audit/2026-06-22/decomposition_matrix.md index c1b58c57..0ad098b9 100644 --- a/docs/reports/code_path_audit/2026-06-22/decomposition_matrix.md +++ b/docs/reports/code_path_audit/2026-06-22/decomposition_matrix.md @@ -4,15 +4,15 @@ | Aggregate | Producers | Consumers | Struct fields | Current cost (us/turn) | Direction | Actionable savings (us/turn) | |---|---|---|---|---|---|---| -| `Metadata` | 117 | 66 | 10 | 720 | `hold` | 0 | -| `FileItem` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | -| `FileItems` | 0 | 4 | 5 | 470 | `hold` | 70 | -| `CommsLogEntry` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | -| `CommsLog` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | -| `HistoryMessage` | 1 | 2 | 5 | 470 | `insufficient_data` | 0 | -| `History` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | -| `ToolDefinition` | 2 | 0 | 5 | 470 | `insufficient_data` | 0 | -| `ToolCall` | 1 | 1 | 5 | 470 | `hold` | 70 | +| `Metadata` | 483 | 752 | 6 | 520 | `hold` | 0 | +| `FileItem` | 117 | 66 | 5 | 470 | `hold` | 70 | +| `FileItems` | 6 | 9 | 5 | 470 | `hold` | 70 | +| `CommsLogEntry` | 117 | 66 | 5 | 470 | `hold` | 70 | +| `CommsLog` | 6 | 5 | 5 | 470 | `hold` | 70 | +| `HistoryMessage` | 118 | 68 | 5 | 470 | `hold` | 70 | +| `History` | 7 | 7 | 5 | 470 | `hold` | 70 | +| `ToolDefinition` | 119 | 66 | 5 | 470 | `hold` | 70 | +| `ToolCall` | 118 | 67 | 5 | 470 | `hold` | 70 | | `Result` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | ## Aggregates flagged for refactoring @@ -23,10 +23,4 @@ _(no aggregates currently flagged for refactoring; most have 'hold' status)_ | Aggregate | Reason | |---|---| -| `FileItem` | FileItem: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | -| `CommsLogEntry` | CommsLogEntry: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | -| `CommsLog` | CommsLog: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | -| `HistoryMessage` | HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | -| `History` | History: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | -| `ToolDefinition` | ToolDefinition: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | | `Result` | Result: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. | diff --git a/docs/reports/code_path_audit/2026-06-22/field_usage.md b/docs/reports/code_path_audit/2026-06-22/field_usage.md index 5057486d..2b8cee2f 100644 --- a/docs/reports/code_path_audit/2026-06-22/field_usage.md +++ b/docs/reports/code_path_audit/2026-06-22/field_usage.md @@ -4,17 +4,78 @@ Cross-aggregate analysis of which fields are accessed how often across the codeb | aggregate | field | total accesses | |---|---|---| +| `CommsLog` | `_report_worker_error` | 1 | +| `CommsLog` | `_module_name` | 1 | +| `CommsLog` | `_attr_name` | 1 | +| `CommsLog` | `_cached` | 1 | +| `CommsLogEntry` | `get` | 33 | +| `CommsLogEntry` | `content` | 16 | +| `CommsLogEntry` | `marker` | 16 | +| `CommsLogEntry` | `pop` | 6 | +| `CommsLogEntry` | `files` | 5 | +| `CommsLogEntry` | `session_usage` | 5 | +| `CommsLogEntry` | `_pending_history_adds_lock` | 4 | +| `CommsLogEntry` | `_pending_history_adds` | 4 | +| `CommsLogEntry` | `ai_status` | 4 | +| `CommsLogEntry` | `append` | 3 | +| `FileItem` | `get` | 33 | +| `FileItem` | `content` | 16 | +| `FileItem` | `marker` | 16 | +| `FileItem` | `pop` | 6 | +| `FileItem` | `files` | 5 | +| `FileItem` | `session_usage` | 5 | +| `FileItem` | `_pending_history_adds_lock` | 4 | +| `FileItem` | `_pending_history_adds` | 4 | +| `FileItem` | `ai_status` | 4 | +| `FileItem` | `append` | 3 | | `FileItems` | `append` | 2 | -| `HistoryMessage` | `lock` | 2 | -| `HistoryMessage` | `messages` | 2 | -| `Metadata` | `get` | 39 | -| `Metadata` | `content` | 21 | -| `Metadata` | `marker` | 21 | -| `Metadata` | `pop` | 10 | -| `Metadata` | `session_usage` | 7 | -| `Metadata` | `files` | 5 | -| `Metadata` | `ai_status` | 5 | +| `FileItems` | `_report_worker_error` | 1 | +| `FileItems` | `_module_name` | 1 | +| `FileItems` | `_attr_name` | 1 | +| `FileItems` | `_cached` | 1 | +| `History` | `lock` | 2 | +| `History` | `messages` | 2 | +| `History` | `_report_worker_error` | 1 | +| `History` | `_module_name` | 1 | +| `History` | `_attr_name` | 1 | +| `History` | `_cached` | 1 | +| `HistoryMessage` | `get` | 33 | +| `HistoryMessage` | `content` | 15 | +| `HistoryMessage` | `marker` | 15 | +| `HistoryMessage` | `pop` | 6 | +| `HistoryMessage` | `files` | 5 | +| `HistoryMessage` | `session_usage` | 5 | +| `HistoryMessage` | `_pending_history_adds_lock` | 4 | +| `HistoryMessage` | `_pending_history_adds` | 4 | +| `HistoryMessage` | `ai_status` | 4 | +| `HistoryMessage` | `append` | 3 | +| `Metadata` | `get` | 13 | +| `Metadata` | `active_tier` | 6 | +| `Metadata` | `mma_tier_usage` | 6 | +| `Metadata` | `active_track` | 5 | +| `Metadata` | `session_usage` | 5 | +| `Metadata` | `files` | 4 | +| `Metadata` | `_size` | 4 | | `Metadata` | `_pending_history_adds_lock` | 4 | | `Metadata` | `_pending_history_adds` | 4 | -| `Metadata` | `append` | 3 | -| `ToolCall` | `to_dict` | 1 | +| `Metadata` | `parent` | 4 | +| `ToolCall` | `get` | 33 | +| `ToolCall` | `content` | 16 | +| `ToolCall` | `marker` | 16 | +| `ToolCall` | `pop` | 6 | +| `ToolCall` | `files` | 5 | +| `ToolCall` | `session_usage` | 5 | +| `ToolCall` | `_pending_history_adds_lock` | 4 | +| `ToolCall` | `_pending_history_adds` | 4 | +| `ToolCall` | `ai_status` | 4 | +| `ToolCall` | `append` | 3 | +| `ToolDefinition` | `get` | 33 | +| `ToolDefinition` | `content` | 16 | +| `ToolDefinition` | `marker` | 16 | +| `ToolDefinition` | `pop` | 6 | +| `ToolDefinition` | `files` | 5 | +| `ToolDefinition` | `session_usage` | 5 | +| `ToolDefinition` | `_pending_history_adds_lock` | 4 | +| `ToolDefinition` | `_pending_history_adds` | 4 | +| `ToolDefinition` | `ai_status` | 4 | +| `ToolDefinition` | `append` | 3 | diff --git a/docs/reports/code_path_audit/2026-06-22/hot_paths.md b/docs/reports/code_path_audit/2026-06-22/hot_paths.md index c1ebacca..dfb8c5d3 100644 --- a/docs/reports/code_path_audit/2026-06-22/hot_paths.md +++ b/docs/reports/code_path_audit/2026-06-22/hot_paths.md @@ -6,32 +6,90 @@ Functions on the per-LLM-turn path (high-frequency consumers). ### `Metadata` +| function | pattern | total field accesses | +|---|---|---| +| `src.app_controller._on_comms_entry` | `field_by_field` | 28 | +| `src.app_controller._handle_mma_state_update` | `field_by_field` | 23 | +| `src.file_cache.walk` | `field_by_field` | 6 | +| `src.project_manager.save_project` | `mixed` | 5 | +| `src.code_path_audit.synthesize_aggregate_profile` | `whole_struct` | 5 | + +### `FileItem` + | function | pattern | total field accesses | |---|---|---| | `src.app_controller._on_comms_entry` | `field_by_field` | 28 | | `src.app_controller._start_track_logic_result` | `field_by_field` | 25 | -| `src.app_controller._refresh_api_metrics` | `field_by_field` | 15 | | `src.ai_client._add_bleed_derived` | `field_by_field` | 11 | | `src.aggregate.run` | `field_by_field` | 10 | +| `src.project_manager.flat_config` | `whole_struct` | 7 | ### `FileItems` | function | pattern | total field accesses | |---|---|---| +| `src.gui_2.__init__` | `field_by_field` | 3 | | `src.ai_client.run_with_tool_loop` | `whole_struct` | 2 | -| `src.ai_client._build_file_diff_text` | `whole_struct` | 0 | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | 1 | +| `src.app_controller._symbol_resolution_result` | `whole_struct` | 0 | | `src.ai_client._build_file_context_text` | `whole_struct` | 0 | -| `src.ai_client._reread_file_items_result` | `whole_struct` | 0 | + +### `CommsLogEntry` + +| function | pattern | total field accesses | +|---|---|---| +| `src.app_controller._on_comms_entry` | `field_by_field` | 28 | +| `src.app_controller._start_track_logic_result` | `field_by_field` | 25 | +| `src.ai_client._add_bleed_derived` | `field_by_field` | 11 | +| `src.aggregate.run` | `field_by_field` | 10 | +| `src.project_manager.flat_config` | `whole_struct` | 7 | + +### `CommsLog` + +| function | pattern | total field accesses | +|---|---|---| +| `src.gui_2.__init__` | `field_by_field` | 3 | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | 1 | +| `src.app_controller._symbol_resolution_result` | `whole_struct` | 0 | +| `src.app_controller._serialize_tool_calls_result` | `whole_struct` | 0 | +| `src.project_manager.calculate_track_progress` | `whole_struct` | 0 | ### `HistoryMessage` | function | pattern | total field accesses | |---|---|---| +| `src.app_controller._on_comms_entry` | `field_by_field` | 28 | +| `src.app_controller._start_track_logic_result` | `field_by_field` | 25 | +| `src.ai_client._add_bleed_derived` | `field_by_field` | 11 | +| `src.aggregate.run` | `field_by_field` | 10 | +| `src.project_manager.flat_config` | `whole_struct` | 7 | + +### `History` + +| function | pattern | total field accesses | +|---|---|---| +| `src.gui_2.__init__` | `field_by_field` | 3 | | `src.provider_state.append` | `mixed` | 2 | | `src.provider_state.replace_all` | `mixed` | 2 | +| `src.app_controller._topological_sort_tickets_result` | `whole_struct` | 1 | +| `src.app_controller._symbol_resolution_result` | `whole_struct` | 0 | + +### `ToolDefinition` + +| function | pattern | total field accesses | +|---|---|---| +| `src.app_controller._on_comms_entry` | `field_by_field` | 28 | +| `src.app_controller._start_track_logic_result` | `field_by_field` | 25 | +| `src.ai_client._add_bleed_derived` | `field_by_field` | 11 | +| `src.aggregate.run` | `field_by_field` | 10 | +| `src.project_manager.flat_config` | `whole_struct` | 7 | ### `ToolCall` | function | pattern | total field accesses | |---|---|---| -| `src.openai_compatible._to_dict_tool_call` | `whole_struct` | 1 | +| `src.app_controller._on_comms_entry` | `field_by_field` | 28 | +| `src.app_controller._start_track_logic_result` | `field_by_field` | 25 | +| `src.ai_client._add_bleed_derived` | `field_by_field` | 11 | +| `src.aggregate.run` | `field_by_field` | 10 | +| `src.project_manager.flat_config` | `whole_struct` | 7 | diff --git a/docs/reports/code_path_audit/2026-06-22/organization_deductions.md b/docs/reports/code_path_audit/2026-06-22/organization_deductions.md index 0e80cf9f..1642fda0 100644 --- a/docs/reports/code_path_audit/2026-06-22/organization_deductions.md +++ b/docs/reports/code_path_audit/2026-06-22/organization_deductions.md @@ -11,14 +11,21 @@ Cross-aggregate view of codebase organization. Verdicts derived from SSDL analys | file | aggregates produced | aggregates consumed | |---|---|---| -| `src\ai_client.py` | 2 | 2 | -| `src\aggregate.py` | 1 | 1 | -| `src\app_controller.py` | 1 | 1 | -| `src\models.py` | 1 | 1 | -| `src\openai_compatible.py` | 1 | 1 | -| `src\project_manager.py` | 1 | 1 | -| `src\provider_state.py` | 1 | 1 | -| `src\api_hook_client.py` | 1 | 0 | +| `src\ai_client.py` | 9 | 7 | +| `src\app_controller.py` | 6 | 9 | +| `src\project_manager.py` | 6 | 9 | +| `src\aggregate.py` | 6 | 6 | +| `src\models.py` | 6 | 6 | +| `src\gui_2.py` | 4 | 4 | +| `src\api_hook_client.py` | 6 | 1 | +| `src\provider_state.py` | 3 | 3 | +| `src\openai_compatible.py` | 2 | 2 | +| `src\api_hooks.py` | 1 | 1 | +| `src\api_hooks_helpers.py` | 1 | 1 | +| `src\beads_client.py` | 1 | 1 | +| `src\code_path_audit.py` | 1 | 1 | +| `src\code_path_audit_analysis.py` | 1 | 1 | +| `src\code_path_audit_cross_audit.py` | 1 | 1 | ### Files with high coupling (producers + consumers >= 8) @@ -26,20 +33,26 @@ These files are the central nervous system of the codebase. Changes ripple acros | file | coupling score (producers + consumers) | |---|---| +| `src\ai_client.py` | 16 (high) | +| `src\app_controller.py` | 15 (high) | +| `src\project_manager.py` | 15 (high) | +| `src\aggregate.py` | 12 (high) | +| `src\models.py` | 12 (high) | +| `src\gui_2.py` | 8 (high) | ## Per-aggregate organization verdict | Aggregate | Verdict | Notes | |---|---|---| -| `Metadata` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750390 effective codepaths | -| `FileItem` | needs restructuring | 0% field efficiency | -| `FileItems` | needs restructuring | 2 nil checks; 0% field efficiency; 8388712 effective codepaths | -| `CommsLogEntry` | needs restructuring | 0% field efficiency | +| `Metadata` | needs restructuring | 74 nil checks; 0% field efficiency; 40142494212284116997693 effective codepaths | +| `FileItem` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750390 effective codepaths | +| `FileItems` | needs restructuring | 2 nil checks; 0% field efficiency; 8388739 effective codepaths | +| `CommsLogEntry` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750390 effective codepaths | | `CommsLog` | needs restructuring | 0% field efficiency | -| `HistoryMessage` | needs restructuring | 0% field efficiency | +| `HistoryMessage` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750394 effective codepaths | | `History` | needs restructuring | 0% field efficiency | -| `ToolDefinition` | needs restructuring | 0% field efficiency | -| `ToolCall` | needs restructuring | 0% field efficiency | +| `ToolDefinition` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750390 effective codepaths | +| `ToolCall` | needs restructuring | 9 nil checks; 0% field efficiency; 40140116231395706750391 effective codepaths | | `Result` | needs restructuring | 0% field efficiency | **Tally:** 0 well-organized, 0 moderate, 10 needs restructuring @@ -48,18 +61,18 @@ These files are the central nervous system of the codebase. Changes ripple acros Top restructuring routes (by effective codepath count): -1. **`Metadata`**: 40140116231395706750390 effective codepaths (0% field efficiency) +1. **`Metadata`**: 40142494212284116997693 effective codepaths (0% field efficiency) + - Apply nil sentinel to 74 nil-check functions + - Migrate to immediate-mode cache for 123 field-access sites +2. **`HistoryMessage`**: 40140116231395706750394 effective codepaths (0% field efficiency) - Apply nil sentinel to 9 nil-check functions - - Migrate to immediate-mode cache for 173 field-access sites -2. **`FileItems`**: 8388712 effective codepaths (0% field efficiency) - - Apply nil sentinel to 2 nil-check functions - - Migrate to immediate-mode cache for 2 field-access sites -3. **`HistoryMessage`**: 4 effective codepaths (0% field efficiency) - - Apply nil sentinel to 0 nil-check functions - - Migrate to immediate-mode cache for 4 field-access sites -4. **`ToolCall`**: 1 effective codepaths (0% field efficiency) - - Apply nil sentinel to 0 nil-check functions - - Migrate to immediate-mode cache for 1 field-access sites -5. **`FileItem`**: 0 effective codepaths (0% field efficiency) - - Apply nil sentinel to 0 nil-check functions - - Migrate to immediate-mode cache for 0 field-access sites + - Migrate to immediate-mode cache for 137 field-access sites +3. **`ToolCall`**: 40140116231395706750391 effective codepaths (0% field efficiency) + - Apply nil sentinel to 9 nil-check functions + - Migrate to immediate-mode cache for 136 field-access sites +4. **`FileItem`**: 40140116231395706750390 effective codepaths (0% field efficiency) + - Apply nil sentinel to 9 nil-check functions + - Migrate to immediate-mode cache for 135 field-access sites +5. **`CommsLogEntry`**: 40140116231395706750390 effective codepaths (0% field efficiency) + - Apply nil sentinel to 9 nil-check functions + - Migrate to immediate-mode cache for 135 field-access sites diff --git a/docs/reports/code_path_audit/2026-06-22/ssdl_analysis.md b/docs/reports/code_path_audit/2026-06-22/ssdl_analysis.md index 4d3ddd86..ee2144c3 100644 --- a/docs/reports/code_path_audit/2026-06-22/ssdl_analysis.md +++ b/docs/reports/code_path_audit/2026-06-22/ssdl_analysis.md @@ -6,85 +6,85 @@ Per-aggregate analysis: effective codepaths, branch points, defusing opportuniti | Aggregate | Consumers | Total branches | Effective codepaths | Field efficiency | |---|---|---|---|---| -| `Metadata` | 66 | 541 | 40140116231395706750390 | 0% | -| `FileItems` | 4 | 37 | 8388712 | 0% | -| `HistoryMessage` | 2 | 2 | 4 | 0% | -| `ToolCall` | 1 | 0 | 1 | 0% | -| `FileItem` | 0 | 0 | 0 | 0% | -| `CommsLogEntry` | 0 | 0 | 0 | 0% | -| `CommsLog` | 0 | 0 | 0 | 0% | -| `History` | 0 | 0 | 0 | 0% | -| `ToolDefinition` | 0 | 0 | 0 | 0% | +| `Metadata` | 752 | 3466 | 40142494212284116997693 | 0% | +| `HistoryMessage` | 68 | 543 | 40140116231395706750394 | 0% | +| `ToolCall` | 67 | 541 | 40140116231395706750391 | 0% | +| `FileItem` | 66 | 541 | 40140116231395706750390 | 0% | +| `CommsLogEntry` | 66 | 541 | 40140116231395706750390 | 0% | +| `ToolDefinition` | 66 | 541 | 40140116231395706750390 | 0% | +| `FileItems` | 9 | 46 | 8388739 | 0% | +| `History` | 7 | 11 | 31 | 0% | +| `CommsLog` | 5 | 9 | 27 | 0% | | `Result` | 0 | 0 | 0 | 0% | ## Defusing recommendations (top 10) +### `Metadata` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` + +- **Location:** Metadata consumers access 123 sites, only 0 typed (0%) +- **Current state:** Many consumers use wildcard or defensive access patterns +- **Recommended change:** Introduce a `metadata_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 123 field-check branches to 1 cache lookup. +- **Effective codepaths:** 40142494212284116997693 -> 123 + ### `Metadata` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` -- **Location:** Metadata consumers have 541 explicit branch points total +- **Location:** Metadata consumers have 3466 explicit branch points total +- **Current state:** Branch explosion: 3466 branches = 40142494212284116997693 effective codepaths +- **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. +- **Effective codepaths:** 40142494212284116997693 -> 752 + +### `HistoryMessage` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` + +- **Location:** HistoryMessage consumers have 543 explicit branch points total +- **Current state:** Branch explosion: 543 branches = 40140116231395706750394 effective codepaths +- **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. +- **Effective codepaths:** 40140116231395706750394 -> 68 + +### `FileItem` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` + +- **Location:** FileItem consumers have 541 explicit branch points total - **Current state:** Branch explosion: 541 branches = 40140116231395706750390 effective codepaths - **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. - **Effective codepaths:** 40140116231395706750390 -> 66 -### `Metadata` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` +### `CommsLogEntry` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` -- **Location:** Metadata consumers access 173 sites, only 0 typed (0%) -- **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `metadata_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 173 field-check branches to 1 cache lookup. -- **Effective codepaths:** 40140116231395706750390 -> 173 - -### `FileItems` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` - -- **Location:** FileItems consumers access 2 sites, only 0 typed (0%) -- **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `fileitems_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 2 field-check branches to 1 cache lookup. -- **Effective codepaths:** 8388712 -> 2 - -### `FileItems` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` - -- **Location:** FileItems consumers have 37 explicit branch points total -- **Current state:** Branch explosion: 37 branches = 8388712 effective codepaths +- **Location:** CommsLogEntry consumers have 541 explicit branch points total +- **Current state:** Branch explosion: 541 branches = 40140116231395706750390 effective codepaths - **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. -- **Effective codepaths:** 8388712 -> 4 +- **Effective codepaths:** 40140116231395706750390 -> 66 -### `Metadata` - Nil Sentinel `[N]` +### `ToolDefinition` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` -- **Location:** 9 consumer functions have `is None` / `== None` checks -- **Current state:** 9 nil-check branches contribute to branch explosion -- **Recommended change:** Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. -- **Effective codepaths:** 40140116231395706750390 -> 40140116231395706750372 +- **Location:** ToolDefinition consumers have 541 explicit branch points total +- **Current state:** Branch explosion: 541 branches = 40140116231395706750390 effective codepaths +- **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. +- **Effective codepaths:** 40140116231395706750390 -> 66 -### `FileItems` - Nil Sentinel `[N]` +### `ToolCall` - Generational Handles `[I:ResolveHandle] -> [B:Gen matches?] -> [N|safe]` -- **Location:** 2 consumer functions have `is None` / `== None` checks -- **Current state:** 2 nil-check branches contribute to branch explosion -- **Recommended change:** Introduce a module-level `NIL_` sentinel whose field accesses return safe defaults. Replace None checks with the sentinel. Collapses 2^branch_count into ~1. -- **Effective codepaths:** 8388712 -> 8388708 +- **Location:** ToolCall consumers have 541 explicit branch points total +- **Current state:** Branch explosion: 541 branches = 40140116231395706750391 effective codepaths +- **Recommended change:** Wrap the aggregate in a generational handle (index + generation). Validation is one comparison; mismatch returns the nil sentinel. Reduces N lifetime branches to 1 handle validation + sentinel return. +- **Effective codepaths:** 40140116231395706750391 -> 67 ### `HistoryMessage` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` -- **Location:** HistoryMessage consumers access 4 sites, only 0 typed (0%) +- **Location:** HistoryMessage consumers access 137 sites, only 0 typed (0%) - **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `historymessage_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 4 field-check branches to 1 cache lookup. -- **Effective codepaths:** 4 -> 4 - -### `ToolCall` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` - -- **Location:** ToolCall consumers access 1 sites, only 0 typed (0%) -- **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `toolcall_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 1 field-check branches to 1 cache lookup. -- **Effective codepaths:** 1 -> 1 +- **Recommended change:** Introduce a `historymessage_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 137 field-check branches to 1 cache lookup. +- **Effective codepaths:** 40140116231395706750394 -> 137 ### `FileItem` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` -- **Location:** FileItem consumers access 0 sites, only 0 typed (0%) +- **Location:** FileItem consumers access 135 sites, only 0 typed (0%) - **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `fileitem_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. -- **Effective codepaths:** 0 -> 1 +- **Recommended change:** Introduce a `fileitem_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 135 field-check branches to 1 cache lookup. +- **Effective codepaths:** 40140116231395706750390 -> 135 ### `CommsLogEntry` - Immediate-Mode Cache `[Q:key] -> [I:FetchCached] -> [T]` -- **Location:** CommsLogEntry consumers access 0 sites, only 0 typed (0%) +- **Location:** CommsLogEntry consumers access 135 sites, only 0 typed (0%) - **Current state:** Many consumers use wildcard or defensive access patterns -- **Recommended change:** Introduce a `commslogentry_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 0 field-check branches to 1 cache lookup. -- **Effective codepaths:** 0 -> 1 +- **Recommended change:** Introduce a `commslogentry_cache` keyed lookup. Consumers request by key, get cached value, no field-existence checks. Reduces 135 field-check branches to 1 cache lookup. +- **Effective codepaths:** 40140116231395706750390 -> 135 diff --git a/docs/reports/code_path_audit/2026-06-22/summary.md b/docs/reports/code_path_audit/2026-06-22/summary.md index 37a3d9f4..bcde69f8 100644 --- a/docs/reports/code_path_audit/2026-06-22/summary.md +++ b/docs/reports/code_path_audit/2026-06-22/summary.md @@ -4,10 +4,10 @@ Generated for 13 aggregates on 2026-06-22 - **Real aggregates (in scope):** 10 - **Candidate aggregates (placeholders):** 3 -- **Total producers:** 121 -- **Total consumers:** 73 -- **Total current cost (us/turn):** 4950 -- **Total actionable savings (us/turn):** 140 +- **Total producers:** 1091 +- **Total consumers:** 1106 +- **Total current cost (us/turn):** 4750 +- **Total actionable savings (us/turn):** 560 ## 4-mem-dim rollup @@ -20,16 +20,16 @@ Generated for 13 aggregates on 2026-06-22 | Aggregate | Kind | Memory dim | Access pattern | Producers | Consumers | |---|---|---|---|---|---| -| `CommsLog` | `typealias` | `discussion` | `mixed` | 0 | 0 | -| `CommsLogEntry` | `typealias` | `discussion` | `mixed` | 0 | 0 | -| `FileItem` | `typealias` | `curation` | `mixed` | 0 | 0 | -| `FileItems` | `typealias` | `curation` | `whole_struct` | 0 | 4 | -| `History` | `typealias` | `discussion` | `mixed` | 0 | 0 | -| `HistoryMessage` | `typealias` | `discussion` | `mixed` | 1 | 2 | -| `Metadata` | `typealias` | `discussion` | `whole_struct` | 117 | 66 | +| `CommsLog` | `typealias` | `discussion` | `whole_struct` | 6 | 5 | +| `CommsLogEntry` | `typealias` | `discussion` | `whole_struct` | 117 | 66 | +| `FileItem` | `typealias` | `curation` | `whole_struct` | 117 | 66 | +| `FileItems` | `typealias` | `curation` | `whole_struct` | 6 | 9 | +| `History` | `typealias` | `discussion` | `whole_struct` | 7 | 7 | +| `HistoryMessage` | `typealias` | `discussion` | `whole_struct` | 118 | 68 | +| `Metadata` | `typealias` | `discussion` | `whole_struct` | 483 | 752 | | `Result` | `typealias` | `control` | `mixed` | 0 | 0 | -| `ToolCall` | `typealias` | `control` | `whole_struct` | 1 | 1 | -| `ToolDefinition` | `typealias` | `control` | `mixed` | 2 | 0 | +| `ToolCall` | `typealias` | `control` | `whole_struct` | 118 | 67 | +| `ToolDefinition` | `typealias` | `control` | `whole_struct` | 119 | 66 | | `ChatMessage` | `candidate_dataclass` | `discussion` | `mixed` | 0 | 0 | | `ProviderHistory` | `candidate_dataclass` | `unknown` | `mixed` | 0 | 0 | | `ToolSpec` | `candidate_dataclass` | `unknown` | `mixed` | 0 | 0 | @@ -38,44 +38,44 @@ Generated for 13 aggregates on 2026-06-22 ### `CommsLog` -- **Result coverage:** 0 producers, 0 consumers -- **Type alias coverage:** 0 sites -- **Cross-audit findings (total sites):** 0 +- **Result coverage:** 6 producers, 5 consumers +- **Type alias coverage:** 4 sites; 0 typed (0%); 4 untyped (100%) +- **Cross-audit findings (total sites):** 1 ### `CommsLogEntry` -- **Result coverage:** 0 producers, 0 consumers -- **Type alias coverage:** 0 sites +- **Result coverage:** 96 producers, 46 consumers +- **Type alias coverage:** 135 sites; 0 typed (0%); 135 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `FileItem` -- **Result coverage:** 0 producers, 0 consumers -- **Type alias coverage:** 0 sites +- **Result coverage:** 96 producers, 46 consumers +- **Type alias coverage:** 135 sites; 0 typed (0%); 135 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `FileItems` -- **Result coverage:** 0 producers, 4 consumers -- **Type alias coverage:** 2 sites; 0 typed (0%); 2 untyped (100%) +- **Result coverage:** 6 producers, 9 consumers +- **Type alias coverage:** 6 sites; 0 typed (0%); 6 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `History` -- **Result coverage:** 0 producers, 0 consumers -- **Type alias coverage:** 0 sites +- **Result coverage:** 7 producers, 7 consumers +- **Type alias coverage:** 8 sites; 0 typed (0%); 8 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `HistoryMessage` -- **Result coverage:** 1 producers, 2 consumers -- **Type alias coverage:** 4 sites; 0 typed (0%); 4 untyped (100%) +- **Result coverage:** 97 producers, 48 consumers +- **Type alias coverage:** 137 sites; 0 typed (0%); 137 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `Metadata` -- **Result coverage:** 96 producers, 46 consumers -- **Type alias coverage:** 173 sites; 0 typed (0%); 173 untyped (100%) +- **Result coverage:** 457 producers, 697 consumers +- **Type alias coverage:** 123 sites; 0 typed (0%); 123 untyped (100%) - **Cross-audit findings (total sites):** 1 ### `Result` @@ -86,12 +86,12 @@ Generated for 13 aggregates on 2026-06-22 ### `ToolCall` -- **Result coverage:** 1 producers, 1 consumers -- **Type alias coverage:** 1 sites; 0 typed (0%); 1 untyped (100%) +- **Result coverage:** 97 producers, 47 consumers +- **Type alias coverage:** 136 sites; 0 typed (0%); 136 untyped (100%) - **Cross-audit findings (total sites):** 0 ### `ToolDefinition` -- **Result coverage:** 2 producers, 0 consumers -- **Type alias coverage:** 0 sites +- **Result coverage:** 98 producers, 46 consumers +- **Type alias coverage:** 135 sites; 0 typed (0%); 135 untyped (100%) - **Cross-audit findings (total sites):** 1 diff --git a/src/code_path_audit.py b/src/code_path_audit.py index 6a746ff2..bde09b8d 100644 --- a/src/code_path_audit.py +++ b/src/code_path_audit.py @@ -208,6 +208,44 @@ def _extract_type_name(ann: ast.expr) -> str | None: return None +ALIAS_TO_BASE: dict[str, str] = { + "Metadata": "dict[str, Any]", + "CommsLogEntry": "Metadata", + "CommsLog": "list[CommsLogEntry]", + "HistoryMessage": "Metadata", + "History": "list[HistoryMessage]", + "FileItem": "Metadata", + "FileItems": "list[FileItem]", + "ToolDefinition": "Metadata", + "ToolCall": "Metadata", +} + + +def _resolve_aliases(aggregate_name: str | None) -> list[str]: + """Given a detected aggregate name, resolve to ALL aliases it represents. + + For example, if a function returns dict[str, Any], resolve to + [Metadata, CommsLogEntry, HistoryMessage, FileItem, ToolDefinition, ToolCall] + because all of those TypeAliases point to dict[str, Any]. + + Also resolves transitive: list[CommsLogEntry] -> CommsLog, + because CommsLog: TypeAlias = list[CommsLogEntry]. + """ + if aggregate_name is None: + return [] + result: list[str] = [] + for alias, base in ALIAS_TO_BASE.items(): + if aggregate_name in base: + result.append(alias) + elif f"[{aggregate_name}]" in base: + result.append(alias) + elif aggregate_name == alias: + result.append(alias) + if not result and aggregate_name: + result = [aggregate_name] + return result + + def P1_pass(tree: ast.Module, file: str) -> list[tuple[str, str, str, str, int]]: """AST pass 1: detect producers of T and Result[T] via return annotations.""" out: list[tuple[str, str, str, str, int]] = [] @@ -217,8 +255,9 @@ def P1_pass(tree: ast.Module, file: str) -> list[tuple[str, str, str, str, int]] if node.returns is None: continue aggregate = _extract_type_name(node.returns) - if aggregate and aggregate not in ("None", "NoneType"): - out.append((node.name, aggregate, "producer", "high", node.lineno)) + for resolved in _resolve_aliases(aggregate): + if resolved not in ("None", "NoneType"): + out.append((node.name, resolved, "producer", "high", node.lineno)) return out @@ -232,8 +271,9 @@ def P2_pass(tree: ast.Module, file: str) -> list[tuple[str, str, str, str, int]] if arg.annotation is None: continue aggregate = _extract_type_name(arg.annotation) - if aggregate and aggregate not in ("None", "NoneType"): - out.append((node.name, aggregate, "consumer", "high", node.lineno)) + for resolved in _resolve_aliases(aggregate): + if resolved not in ("None", "NoneType"): + out.append((node.name, resolved, "consumer", "high", node.lineno)) return out @@ -1118,9 +1158,9 @@ def synthesize_aggregate_profile( ) type_registry = audit_inputs.get("type_registry", {}).get("types", {}) if isinstance(audit_inputs.get("type_registry"), dict) else {} pattern, _per_pattern_counts, evidence = aggregate_pattern_from_consumers( - consumers, aggregate, type_registry, "src" + consumers[:50], aggregate, type_registry, "src" ) - tac = compute_real_type_alias_coverage(aggregate, producers, consumers, type_registry, "src") + tac = compute_real_type_alias_coverage(aggregate, producers[:50], consumers[:50], type_registry, "src") from src.code_path_audit_cross_audit import ( aggregate_findings, build_cross_audit_findings_for_aggregate, @@ -1145,7 +1185,7 @@ def synthesize_aggregate_profile( result_consumers=0, summary=f"{producer_count} producers, {consumer_count} consumers", ) - dc = compute_real_decomposition_cost(aggregate, producers, consumers, pattern, "per_turn", type_registry, "src") + dc = compute_real_decomposition_cost(aggregate, producers[:50], consumers[:50], pattern, "per_turn", type_registry, "src") candidates = extract_real_optimization_candidates(aggregate, producers, consumers, dc, type_registry, "src") freq_evidence = tuple( FrequencyEvidence(function=f, frequency="per_turn", source="static_analysis", note=f"producer from {f.file}")