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 d4ff378d..ce765c55 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 @@ -10,17 +10,17 @@ \ === producers (0 items) === \ === consumers (3 items) === + "src.ai_client._build_file_context_text" "src\ai_client.py" 0 "consumer" fn-ref "src.ai_client._build_file_diff_text" "src\ai_client.py" 0 "consumer" fn-ref "src.ai_client._reread_file_items_result" "src\ai_client.py" 0 "consumer" fn-ref - "src.ai_client._build_file_context_text" "src\ai_client.py" 0 "consumer" fn-ref \ === access_pattern === "whole_struct" access-pattern \ === access_pattern_evidence (3 items) === + "src.ai_client._build_file_context_text" "whole_struct" 0 "low" ap-evidence "src.ai_client._build_file_diff_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_context_text" "whole_struct" 0 "low" ap-evidence \ === frequency === "per_turn" frequency 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 d67ca74e..7fe7f3df 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 @@ -23,9 +23,9 @@ _(none)_ ### `src\ai_client.py` (3 consumers) +- `src.ai_client._build_file_context_text` (line 0) - `src.ai_client._build_file_diff_text` (line 0) - `src.ai_client._reread_file_items_result` (line 0) -- `src.ai_client._build_file_context_text` (line 0) ## Field access matrix @@ -98,6 +98,6 @@ FileItems: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5 | function | pattern | field_accesses | confidence | |---|---|---|---| +| `src.ai_client._build_file_context_text` | `whole_struct` | | low | | `src.ai_client._build_file_diff_text` | `whole_struct` | | low | | `src.ai_client._reread_file_items_result` | `whole_struct` | | low | -| `src.ai_client._build_file_context_text` | `whole_struct` | | low | 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 36a9ee45..9bd3710f 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 @@ -3,9 +3,9 @@ Metadata: FileItems |- memory_dim: curation |- producers: [0] |- consumers: [3] +| |- src.ai_client._build_file_context_text (consumer) | |- src.ai_client._build_file_diff_text (consumer) | |- src.ai_client._reread_file_items_result (consumer) -| |- src.ai_client._build_file_context_text (consumer) |- access_pattern: whole_struct |- frequency: per_turn |- result_coverage: 0 producers, 3 consumers 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 e089ec5b..f46512e4 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 @@ -10,15 +10,15 @@ \ === producers (0 items) === \ === consumers (2 items) === - "src.provider_state.replace_all" "src\provider_state.py" 0 "consumer" fn-ref "src.provider_state.append" "src\provider_state.py" 0 "consumer" fn-ref + "src.provider_state.replace_all" "src\provider_state.py" 0 "consumer" fn-ref \ === access_pattern === "mixed" access-pattern \ === access_pattern_evidence (2 items) === - "src.provider_state.replace_all" "mixed" 2 "high" ap-evidence "src.provider_state.append" "mixed" 2 "high" ap-evidence + "src.provider_state.replace_all" "mixed" 2 "high" ap-evidence \ === frequency === "per_turn" frequency 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 596ba0d4..cad4c5a3 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 @@ -23,15 +23,15 @@ _(none)_ ### `src\provider_state.py` (2 consumers) -- `src.provider_state.replace_all` (line 0) - `src.provider_state.append` (line 0) +- `src.provider_state.replace_all` (line 0) ## Field access matrix | consumer | lock | messages | |---|---|---| -| `replace_all` | 1 | 1 | | `append` | 1 | 1 | +| `replace_all` | 1 | 1 | ## Access pattern @@ -100,5 +100,5 @@ HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, | function | pattern | field_accesses | confidence | |---|---|---|---| -| `src.provider_state.replace_all` | `mixed` | `lock`=1, `messages`=1 | high | | `src.provider_state.append` | `mixed` | `lock`=1, `messages`=1 | high | +| `src.provider_state.replace_all` | `mixed` | `lock`=1, `messages`=1 | high | 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 bde7cf4b..689ffadc 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 @@ -3,8 +3,8 @@ Metadata: HistoryMessage |- memory_dim: discussion |- producers: [0] |- consumers: [2] -| |- src.provider_state.replace_all (consumer) | |- src.provider_state.append (consumer) +| |- src.provider_state.replace_all (consumer) |- access_pattern: mixed |- frequency: per_turn |- result_coverage: 0 producers, 2 consumers 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 6d1868f3..513b7eac 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 @@ -8,170 +8,170 @@ "discussion" mem-dim \ === producers (77 items) === - "src.api_hook_client.get_gui_diagnostics" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller.get_gui_state" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller._api_get_api_project" "src\app_controller.py" 0 "producer" fn-ref - "src.api_hook_client.get_node_status" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.post_session" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller._api_status" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller.get_performance" "src\app_controller.py" 0 "producer" fn-ref "src.api_hook_client.get_financial_metrics" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_patch_status" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller._offload_entry_payload" "src\app_controller.py" 0 "producer" fn-ref - "src.ai_client._send_cli_round_result" "src\ai_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_startup_timeline" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_project" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller.get_session_insights" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.generate" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller._api_get_mma_status" "src\app_controller.py" 0 "producer" fn-ref + "src.api_hook_client.get_mma_status" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.set_value" "src\api_hook_client.py" 0 "producer" fn-ref + "src.ai_client._parse_tool_args_result" "src\ai_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_system_telemetry" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller.get_api_project" "src\app_controller.py" 0 "producer" fn-ref + "src.ai_client._load_credentials" "src\ai_client.py" 0 "producer" fn-ref + "src.project_manager.load_history" "src\project_manager.py" 0 "producer" fn-ref + "src.models._load_config_from_disk" "src\models.py" 0 "producer" fn-ref + "src.api_hook_client.get_context_state" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_session" "src\api_hook_client.py" 0 "producer" fn-ref "src.ai_client.get_token_stats" "src\ai_client.py" 0 "producer" fn-ref "src.api_hook_client.drag" "src\api_hook_client.py" 0 "producer" fn-ref - "src.project_manager.flat_config" "src\project_manager.py" 0 "producer" fn-ref + "src.api_hook_client.post_gui" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller.get_session" "src\app_controller.py" 0 "producer" fn-ref "src.app_controller.get_api_session" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.get_mma_status" "src\app_controller.py" 0 "producer" fn-ref - "src.project_manager.load_project" "src\project_manager.py" 0 "producer" fn-ref - "src.api_hook_client.apply_patch" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_context_state" "src\api_hook_client.py" 0 "producer" fn-ref + "src.ai_client._send_cli_round_result" "src\ai_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_patch_status" "src\api_hook_client.py" 0 "producer" fn-ref "src.api_hook_client.get_status" "src\api_hook_client.py" 0 "producer" fn-ref - "src.project_manager.str_to_entry" "src\project_manager.py" 0 "producer" fn-ref - "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 0 "producer" fn-ref - "src.api_hook_client.post_project" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_gui_diagnostics" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.select_tab" "src\api_hook_client.py" 0 "producer" fn-ref "src.app_controller._api_token_stats" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.token_stats" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.status" "src\app_controller.py" 0 "producer" fn-ref - "src.api_hook_client.get_system_telemetry" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.push_event" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_gui_state" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller._api_get_diagnostics" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller._api_get_api_session" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 0 "producer" fn-ref + "src.project_manager.default_discussion" "src\project_manager.py" 0 "producer" fn-ref + "src.api_hook_client.get_node_status" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller.get_mma_status" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller.wait" "src\app_controller.py" 0 "producer" fn-ref + "src.api_hook_client.wait_for_project_switch" "src\api_hook_client.py" 0 "producer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_warmup_status" "src\api_hook_client.py" 0 "producer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 0 "producer" fn-ref "src.api_hook_client.get_io_pool_status" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller.get_performance" "src\app_controller.py" 0 "producer" fn-ref - "src.api_hook_client.get_project_switch_status" "src\api_hook_client.py" 0 "producer" fn-ref - "src.models.to_dict" "src\models.py" 0 "producer" fn-ref - "src.app_controller.get_api_project" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller._api_get_session" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.get_context" "src\app_controller.py" 0 "producer" fn-ref - "src.api_hook_client.click" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_mma_workers" "src\api_hook_client.py" 0 "producer" fn-ref - "src.ai_client._load_credentials" "src\ai_client.py" 0 "producer" fn-ref + "src.ai_client._content_block_to_dict" "src\ai_client.py" 0 "producer" fn-ref + "src.app_controller.get_session_insights" "src\app_controller.py" 0 "producer" fn-ref + "src.api_hook_client.get_gui_health" "src\api_hook_client.py" 0 "producer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 0 "producer" fn-ref + "src.app_controller._api_generate" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller.generate" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller.token_stats" "src\app_controller.py" 0 "producer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 0 "producer" fn-ref "src.api_hook_client.trigger_patch" "src\api_hook_client.py" 0 "producer" fn-ref "src.api_hook_client.select_list_item" "src\api_hook_client.py" 0 "producer" fn-ref - "src.project_manager.load_history" "src\project_manager.py" 0 "producer" fn-ref - "src.api_hook_client.select_tab" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.reject_patch" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller._api_generate" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.load_config" "src\app_controller.py" 0 "producer" fn-ref - "src.ai_client.get_gemini_cache_stats" "src\ai_client.py" 0 "producer" fn-ref - "src.project_manager.default_project" "src\project_manager.py" 0 "producer" fn-ref - "src.app_controller.wait" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller._api_status" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller._api_get_mma_status" "src\app_controller.py" 0 "producer" fn-ref - "src.ai_client.ollama_chat" "src\ai_client.py" 0 "producer" fn-ref - "src.api_hook_client.wait_for_project_switch" "src\api_hook_client.py" 0 "producer" fn-ref - "src.ai_client._parse_tool_args_result" "src\ai_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_mma_status" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller._api_get_context" "src\app_controller.py" 0 "producer" fn-ref - "src.api_hook_client.get_gui_health" "src\api_hook_client.py" 0 "producer" fn-ref - "src.models._load_config_from_disk" "src\models.py" 0 "producer" fn-ref - "src.api_hook_client.get_session" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller.get_session" "src\app_controller.py" 0 "producer" fn-ref + "src.api_hook_client.click" "src\api_hook_client.py" 0 "producer" fn-ref + "src.models.to_dict" "src\models.py" 0 "producer" fn-ref + "src.api_hook_client.get_project_switch_status" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller._api_get_api_project" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller.get_gui_state" "src\app_controller.py" 0 "producer" fn-ref "src.app_controller._api_get_performance" "src\app_controller.py" 0 "producer" fn-ref - "src.api_hook_client.post_gui" "src\api_hook_client.py" 0 "producer" fn-ref - "src.ai_client._content_block_to_dict" "src\ai_client.py" 0 "producer" fn-ref + "src.project_manager.str_to_entry" "src\project_manager.py" 0 "producer" fn-ref + "src.api_hook_client.post_session" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_startup_timeline" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_mma_workers" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller._api_get_api_session" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller._api_get_context" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller.get_context" "src\app_controller.py" 0 "producer" fn-ref "src.api_hook_client.right_click" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller._api_get_gui_state" "src\app_controller.py" 0 "producer" fn-ref - "src.api_hook_client.get_performance" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_warmup_wait" "src\api_hook_client.py" 0 "producer" fn-ref - "src.ai_client._add_bleed_derived" "src\ai_client.py" 0 "producer" fn-ref - "src.api_hook_client.set_value" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller.get_diagnostics" "src\app_controller.py" 0 "producer" fn-ref - "src.project_manager.default_discussion" "src\project_manager.py" 0 "producer" fn-ref "src.ai_client._dashscope_call" "src\ai_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_warmup_status" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_performance" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller.get_diagnostics" "src\app_controller.py" 0 "producer" fn-ref + "src.api_hook_client.apply_patch" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller._api_get_diagnostics" "src\app_controller.py" 0 "producer" fn-ref + "src.project_manager.load_project" "src\project_manager.py" 0 "producer" fn-ref + "src.app_controller.status" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller.load_config" "src\app_controller.py" 0 "producer" fn-ref + "src.api_hook_client.reject_patch" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_project" "src\api_hook_client.py" 0 "producer" fn-ref + "src.project_manager.default_project" "src\project_manager.py" 0 "producer" fn-ref + "src.api_hook_client.post_project" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller._api_get_gui_state" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller._api_get_session" "src\app_controller.py" 0 "producer" fn-ref + "src.ai_client.get_gemini_cache_stats" "src\ai_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_warmup_wait" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.get_gui_state" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.push_event" "src\api_hook_client.py" 0 "producer" fn-ref \ === consumers (35 items) === - "src.ai_client._add_history_cache_breakpoint" "src\ai_client.py" 0 "consumer" fn-ref - "src.models.from_dict" "src\models.py" 0 "consumer" fn-ref - "src.app_controller._start_track_logic_result" "src\app_controller.py" 0 "consumer" fn-ref - "src.project_manager.entry_to_str" "src\project_manager.py" 0 "consumer" fn-ref - "src.app_controller._on_comms_entry" "src\app_controller.py" 0 "consumer" fn-ref - "src.ai_client._trim_minimax_history" "src\ai_client.py" 0 "consumer" fn-ref - "src.aggregate.build_tier3_context" "src\aggregate.py" 0 "consumer" fn-ref - "src.ai_client.ollama_chat" "src\ai_client.py" 0 "consumer" fn-ref - "src.project_manager.flat_config" "src\project_manager.py" 0 "consumer" fn-ref - "src.ai_client._repair_minimax_history" "src\ai_client.py" 0 "consumer" fn-ref - "src.ai_client._estimate_message_tokens" "src\ai_client.py" 0 "consumer" fn-ref "src.ai_client._strip_private_keys" "src\ai_client.py" 0 "consumer" fn-ref - "src.aggregate._build_files_section_from_items" "src\aggregate.py" 0 "consumer" fn-ref - "src.models._save_config_to_disk" "src\models.py" 0 "consumer" fn-ref - "src.ai_client._repair_deepseek_history" "src\ai_client.py" 0 "consumer" fn-ref - "src.ai_client._pre_dispatch" "src\ai_client.py" 0 "consumer" fn-ref - "src.app_controller._start_track_logic" "src\app_controller.py" 0 "consumer" fn-ref - "src.ai_client._estimate_prompt_tokens" "src\ai_client.py" 0 "consumer" fn-ref - "src.project_manager.save_project" "src\project_manager.py" 0 "consumer" fn-ref - "src.ai_client._repair_anthropic_history" "src\ai_client.py" 0 "consumer" fn-ref "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 0 "consumer" fn-ref + "src.app_controller._start_track_logic" "src\app_controller.py" 0 "consumer" fn-ref + "src.ai_client._trim_minimax_history" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._append_comms" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._trim_anthropic_history" "src\ai_client.py" 0 "consumer" fn-ref + "src.project_manager.save_project" "src\project_manager.py" 0 "consumer" fn-ref + "src.app_controller._start_track_logic_result" "src\app_controller.py" 0 "consumer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 0 "consumer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._estimate_prompt_tokens" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._estimate_message_tokens" "src\ai_client.py" 0 "consumer" fn-ref + "src.aggregate.build_tier3_context" "src\aggregate.py" 0 "consumer" fn-ref + "src.ai_client._strip_cache_controls" "src\ai_client.py" 0 "consumer" fn-ref + "src.project_manager.format_discussion" "src\project_manager.py" 0 "consumer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 0 "consumer" fn-ref + "src.models._save_config_to_disk" "src\models.py" 0 "consumer" fn-ref "src.aggregate.run" "src\aggregate.py" 0 "consumer" fn-ref "src.app_controller._refresh_api_metrics" "src\app_controller.py" 0 "consumer" fn-ref - "src.project_manager.format_discussion" "src\project_manager.py" 0 "consumer" fn-ref - "src.aggregate.build_markdown_from_items" "src\aggregate.py" 0 "consumer" fn-ref - "src.aggregate.build_markdown_no_history" "src\aggregate.py" 0 "consumer" fn-ref - "src.app_controller._offload_entry_payload" "src\app_controller.py" 0 "consumer" fn-ref - "src.ai_client._add_bleed_derived" "src\ai_client.py" 0 "consumer" fn-ref - "src.ai_client._trim_anthropic_history" "src\ai_client.py" 0 "consumer" fn-ref - "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 0 "consumer" fn-ref - "src.ai_client._dashscope_call" "src\ai_client.py" 0 "consumer" fn-ref + "src.app_controller._on_comms_entry" "src\app_controller.py" 0 "consumer" fn-ref "src.ai_client._invalidate_token_estimate" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._dashscope_call" "src\ai_client.py" 0 "consumer" fn-ref + "src.models.from_dict" "src\models.py" 0 "consumer" fn-ref + "src.ai_client._add_history_cache_breakpoint" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 0 "consumer" fn-ref + "src.aggregate.build_markdown_no_history" "src\aggregate.py" 0 "consumer" fn-ref + "src.aggregate._build_files_section_from_items" "src\aggregate.py" 0 "consumer" fn-ref + "src.ai_client._repair_minimax_history" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._repair_anthropic_history" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._repair_deepseek_history" "src\ai_client.py" 0 "consumer" fn-ref + "src.aggregate.build_markdown_from_items" "src\aggregate.py" 0 "consumer" fn-ref + "src.project_manager.entry_to_str" "src\project_manager.py" 0 "consumer" fn-ref + "src.ai_client.ollama_chat" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 0 "consumer" fn-ref "src.ai_client._strip_stale_file_refreshes" "src\ai_client.py" 0 "consumer" fn-ref - "src.ai_client._strip_cache_controls" "src\ai_client.py" 0 "consumer" fn-ref - "src.ai_client._append_comms" "src\ai_client.py" 0 "consumer" fn-ref \ === access_pattern === "whole_struct" access-pattern \ === access_pattern_evidence (35 items) === - "src.ai_client._add_history_cache_breakpoint" "whole_struct" 0 "low" ap-evidence - "src.models.from_dict" "mixed" 2 "high" ap-evidence - "src.app_controller._start_track_logic_result" "field_by_field" 17 "high" ap-evidence - "src.project_manager.entry_to_str" "whole_struct" 1 "high" ap-evidence - "src.app_controller._on_comms_entry" "field_by_field" 10 "high" ap-evidence - "src.ai_client._trim_minimax_history" "whole_struct" 1 "high" ap-evidence - "src.aggregate.build_tier3_context" "whole_struct" 0 "low" ap-evidence - "src.ai_client.ollama_chat" "whole_struct" 0 "low" ap-evidence - "src.project_manager.flat_config" "whole_struct" 1 "high" ap-evidence - "src.ai_client._repair_minimax_history" "whole_struct" 1 "high" ap-evidence - "src.ai_client._estimate_message_tokens" "mixed" 2 "high" ap-evidence "src.ai_client._strip_private_keys" "whole_struct" 0 "low" ap-evidence - "src.aggregate._build_files_section_from_items" "whole_struct" 0 "low" ap-evidence - "src.models._save_config_to_disk" "whole_struct" 0 "low" ap-evidence - "src.ai_client._repair_deepseek_history" "whole_struct" 1 "high" ap-evidence - "src.ai_client._pre_dispatch" "whole_struct" 0 "low" ap-evidence - "src.app_controller._start_track_logic" "mixed" 2 "high" ap-evidence - "src.ai_client._estimate_prompt_tokens" "whole_struct" 0 "low" ap-evidence - "src.project_manager.save_project" "mixed" 2 "high" ap-evidence - "src.ai_client._repair_anthropic_history" "whole_struct" 1 "high" ap-evidence "src.project_manager.migrate_from_legacy_config" "whole_struct" 1 "high" ap-evidence + "src.app_controller._start_track_logic" "mixed" 2 "high" ap-evidence + "src.ai_client._trim_minimax_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._append_comms" "whole_struct" 0 "low" ap-evidence + "src.ai_client._trim_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.project_manager.save_project" "mixed" 2 "high" ap-evidence + "src.app_controller._start_track_logic_result" "field_by_field" 17 "high" ap-evidence + "src.project_manager.flat_config" "whole_struct" 1 "high" ap-evidence + "src.ai_client._add_bleed_derived" "field_by_field" 9 "high" ap-evidence + "src.ai_client._estimate_prompt_tokens" "whole_struct" 0 "low" ap-evidence + "src.ai_client._estimate_message_tokens" "mixed" 2 "high" ap-evidence + "src.aggregate.build_tier3_context" "whole_struct" 0 "low" ap-evidence + "src.ai_client._strip_cache_controls" "whole_struct" 0 "low" ap-evidence + "src.project_manager.format_discussion" "whole_struct" 0 "low" ap-evidence + "src.app_controller._offload_entry_payload" "whole_struct" 0 "low" ap-evidence + "src.models._save_config_to_disk" "whole_struct" 0 "low" ap-evidence "src.aggregate.run" "field_by_field" 3 "high" ap-evidence "src.app_controller._refresh_api_metrics" "field_by_field" 11 "high" ap-evidence - "src.project_manager.format_discussion" "whole_struct" 0 "low" ap-evidence - "src.aggregate.build_markdown_from_items" "whole_struct" 0 "low" ap-evidence - "src.aggregate.build_markdown_no_history" "whole_struct" 0 "low" ap-evidence - "src.app_controller._offload_entry_payload" "whole_struct" 0 "low" ap-evidence - "src.ai_client._add_bleed_derived" "field_by_field" 9 "high" ap-evidence - "src.ai_client._trim_anthropic_history" "whole_struct" 1 "high" ap-evidence - "src.ai_client._execute_single_tool_call_async" "mixed" 2 "high" ap-evidence - "src.ai_client._dashscope_call" "whole_struct" 0 "low" ap-evidence + "src.app_controller._on_comms_entry" "field_by_field" 10 "high" ap-evidence "src.ai_client._invalidate_token_estimate" "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._add_history_cache_breakpoint" "whole_struct" 0 "low" ap-evidence + "src.ai_client._pre_dispatch" "whole_struct" 0 "low" ap-evidence + "src.aggregate.build_markdown_no_history" "whole_struct" 0 "low" ap-evidence + "src.aggregate._build_files_section_from_items" "whole_struct" 0 "low" ap-evidence + "src.ai_client._repair_minimax_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._repair_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._repair_deepseek_history" "whole_struct" 1 "high" ap-evidence + "src.aggregate.build_markdown_from_items" "whole_struct" 0 "low" ap-evidence + "src.project_manager.entry_to_str" "whole_struct" 1 "high" 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.ai_client._strip_stale_file_refreshes" "whole_struct" 0 "low" ap-evidence - "src.ai_client._strip_cache_controls" "whole_struct" 0 "low" ap-evidence - "src.ai_client._append_comms" "whole_struct" 0 "low" ap-evidence \ === frequency === "per_turn" frequency \ === frequency_evidence (5 items) === - "src.api_hook_client.get_gui_diagnostics" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence - "src.app_controller.get_gui_state" "per_turn" "static_analysis" "producer from src\app_controller.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.get_node_status" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence - "src.api_hook_client.post_session" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence + "src.app_controller._api_status" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence + "src.app_controller.get_performance" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence + "src.api_hook_client.get_financial_metrics" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence + "src.app_controller._api_get_mma_status" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence + "src.api_hook_client.get_mma_status" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence \ === result_coverage === 77 77 35 0 result-coverage 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 cc461310..b9e8f835 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 @@ -19,187 +19,187 @@ ### `src\ai_client.py` (9 producers) -- `src.ai_client._send_cli_round_result` (line 0) -- `src.ai_client.get_token_stats` (line 0) -- `src.ai_client._load_credentials` (line 0) -- `src.ai_client.get_gemini_cache_stats` (line 0) -- `src.ai_client.ollama_chat` (line 0) - `src.ai_client._parse_tool_args_result` (line 0) -- `src.ai_client._content_block_to_dict` (line 0) +- `src.ai_client._load_credentials` (line 0) +- `src.ai_client.get_token_stats` (line 0) +- `src.ai_client._send_cli_round_result` (line 0) +- `src.ai_client.ollama_chat` (line 0) - `src.ai_client._add_bleed_derived` (line 0) +- `src.ai_client._content_block_to_dict` (line 0) - `src.ai_client._dashscope_call` (line 0) +- `src.ai_client.get_gemini_cache_stats` (line 0) ### `src\api_hook_client.py` (33 producers) -- `src.api_hook_client.get_gui_diagnostics` (line 0) -- `src.api_hook_client.get_node_status` (line 0) -- `src.api_hook_client.post_session` (line 0) - `src.api_hook_client.get_financial_metrics` (line 0) -- `src.api_hook_client.get_patch_status` (line 0) -- `src.api_hook_client.get_startup_timeline` (line 0) -- `src.api_hook_client.get_project` (line 0) -- `src.api_hook_client.drag` (line 0) -- `src.api_hook_client.apply_patch` (line 0) -- `src.api_hook_client.get_context_state` (line 0) -- `src.api_hook_client.get_status` (line 0) -- `src.api_hook_client.post_project` (line 0) +- `src.api_hook_client.get_mma_status` (line 0) +- `src.api_hook_client.set_value` (line 0) - `src.api_hook_client.get_system_telemetry` (line 0) -- `src.api_hook_client.push_event` (line 0) -- `src.api_hook_client.get_gui_state` (line 0) +- `src.api_hook_client.get_context_state` (line 0) +- `src.api_hook_client.get_session` (line 0) +- `src.api_hook_client.drag` (line 0) +- `src.api_hook_client.post_gui` (line 0) +- `src.api_hook_client.get_patch_status` (line 0) +- `src.api_hook_client.get_status` (line 0) +- `src.api_hook_client.get_gui_diagnostics` (line 0) +- `src.api_hook_client.select_tab` (line 0) +- `src.api_hook_client.get_node_status` (line 0) +- `src.api_hook_client.wait_for_project_switch` (line 0) +- `src.api_hook_client.get_warmup_status` (line 0) - `src.api_hook_client.get_io_pool_status` (line 0) -- `src.api_hook_client.get_project_switch_status` (line 0) -- `src.api_hook_client.click` (line 0) -- `src.api_hook_client.get_mma_workers` (line 0) +- `src.api_hook_client.get_gui_health` (line 0) - `src.api_hook_client.trigger_patch` (line 0) - `src.api_hook_client.select_list_item` (line 0) -- `src.api_hook_client.select_tab` (line 0) -- `src.api_hook_client.reject_patch` (line 0) -- `src.api_hook_client.wait_for_project_switch` (line 0) -- `src.api_hook_client.get_mma_status` (line 0) -- `src.api_hook_client.get_gui_health` (line 0) -- `src.api_hook_client.get_session` (line 0) -- `src.api_hook_client.post_gui` (line 0) +- `src.api_hook_client.click` (line 0) +- `src.api_hook_client.get_project_switch_status` (line 0) +- `src.api_hook_client.post_session` (line 0) +- `src.api_hook_client.get_startup_timeline` (line 0) +- `src.api_hook_client.get_mma_workers` (line 0) - `src.api_hook_client.right_click` (line 0) - `src.api_hook_client.get_performance` (line 0) +- `src.api_hook_client.apply_patch` (line 0) +- `src.api_hook_client.reject_patch` (line 0) +- `src.api_hook_client.get_project` (line 0) +- `src.api_hook_client.post_project` (line 0) - `src.api_hook_client.get_warmup_wait` (line 0) -- `src.api_hook_client.set_value` (line 0) -- `src.api_hook_client.get_warmup_status` (line 0) +- `src.api_hook_client.get_gui_state` (line 0) +- `src.api_hook_client.push_event` (line 0) ### `src\app_controller.py` (26 producers) -- `src.app_controller.get_gui_state` (line 0) -- `src.app_controller._api_get_api_project` (line 0) -- `src.app_controller._offload_entry_payload` (line 0) -- `src.app_controller.get_session_insights` (line 0) -- `src.app_controller.generate` (line 0) -- `src.app_controller.get_api_session` (line 0) -- `src.app_controller.get_mma_status` (line 0) -- `src.app_controller._api_token_stats` (line 0) -- `src.app_controller.token_stats` (line 0) -- `src.app_controller.status` (line 0) -- `src.app_controller._api_get_diagnostics` (line 0) -- `src.app_controller._api_get_api_session` (line 0) -- `src.app_controller.get_performance` (line 0) -- `src.app_controller.get_api_project` (line 0) -- `src.app_controller._api_get_session` (line 0) -- `src.app_controller.get_context` (line 0) -- `src.app_controller._api_generate` (line 0) -- `src.app_controller.load_config` (line 0) -- `src.app_controller.wait` (line 0) - `src.app_controller._api_status` (line 0) +- `src.app_controller.get_performance` (line 0) - `src.app_controller._api_get_mma_status` (line 0) -- `src.app_controller._api_get_context` (line 0) +- `src.app_controller.get_api_project` (line 0) - `src.app_controller.get_session` (line 0) +- `src.app_controller.get_api_session` (line 0) +- `src.app_controller._api_token_stats` (line 0) +- `src.app_controller._offload_entry_payload` (line 0) +- `src.app_controller.get_mma_status` (line 0) +- `src.app_controller.wait` (line 0) +- `src.app_controller.get_session_insights` (line 0) +- `src.app_controller._api_generate` (line 0) +- `src.app_controller.generate` (line 0) +- `src.app_controller.token_stats` (line 0) +- `src.app_controller._api_get_api_project` (line 0) +- `src.app_controller.get_gui_state` (line 0) - `src.app_controller._api_get_performance` (line 0) -- `src.app_controller._api_get_gui_state` (line 0) +- `src.app_controller._api_get_api_session` (line 0) +- `src.app_controller._api_get_context` (line 0) +- `src.app_controller.get_context` (line 0) - `src.app_controller.get_diagnostics` (line 0) +- `src.app_controller._api_get_diagnostics` (line 0) +- `src.app_controller.status` (line 0) +- `src.app_controller.load_config` (line 0) +- `src.app_controller._api_get_gui_state` (line 0) +- `src.app_controller._api_get_session` (line 0) ### `src\models.py` (2 producers) -- `src.models.to_dict` (line 0) - `src.models._load_config_from_disk` (line 0) +- `src.models.to_dict` (line 0) ### `src\project_manager.py` (7 producers) -- `src.project_manager.flat_config` (line 0) -- `src.project_manager.load_project` (line 0) -- `src.project_manager.str_to_entry` (line 0) -- `src.project_manager.migrate_from_legacy_config` (line 0) - `src.project_manager.load_history` (line 0) -- `src.project_manager.default_project` (line 0) - `src.project_manager.default_discussion` (line 0) +- `src.project_manager.migrate_from_legacy_config` (line 0) +- `src.project_manager.flat_config` (line 0) +- `src.project_manager.str_to_entry` (line 0) +- `src.project_manager.load_project` (line 0) +- `src.project_manager.default_project` (line 0) ## Consumers (35) ### `src\aggregate.py` (5 consumers) - `src.aggregate.build_tier3_context` (line 0) -- `src.aggregate._build_files_section_from_items` (line 0) - `src.aggregate.run` (line 0) -- `src.aggregate.build_markdown_from_items` (line 0) - `src.aggregate.build_markdown_no_history` (line 0) +- `src.aggregate._build_files_section_from_items` (line 0) +- `src.aggregate.build_markdown_from_items` (line 0) ### `src\ai_client.py` (18 consumers) -- `src.ai_client._add_history_cache_breakpoint` (line 0) -- `src.ai_client._trim_minimax_history` (line 0) -- `src.ai_client.ollama_chat` (line 0) -- `src.ai_client._repair_minimax_history` (line 0) -- `src.ai_client._estimate_message_tokens` (line 0) - `src.ai_client._strip_private_keys` (line 0) -- `src.ai_client._repair_deepseek_history` (line 0) -- `src.ai_client._pre_dispatch` (line 0) -- `src.ai_client._estimate_prompt_tokens` (line 0) -- `src.ai_client._repair_anthropic_history` (line 0) -- `src.ai_client._add_bleed_derived` (line 0) -- `src.ai_client._trim_anthropic_history` (line 0) -- `src.ai_client._execute_single_tool_call_async` (line 0) -- `src.ai_client._dashscope_call` (line 0) -- `src.ai_client._invalidate_token_estimate` (line 0) -- `src.ai_client._strip_stale_file_refreshes` (line 0) -- `src.ai_client._strip_cache_controls` (line 0) +- `src.ai_client._trim_minimax_history` (line 0) - `src.ai_client._append_comms` (line 0) +- `src.ai_client._trim_anthropic_history` (line 0) +- `src.ai_client._add_bleed_derived` (line 0) +- `src.ai_client._estimate_prompt_tokens` (line 0) +- `src.ai_client._estimate_message_tokens` (line 0) +- `src.ai_client._strip_cache_controls` (line 0) +- `src.ai_client._invalidate_token_estimate` (line 0) +- `src.ai_client._dashscope_call` (line 0) +- `src.ai_client._add_history_cache_breakpoint` (line 0) +- `src.ai_client._pre_dispatch` (line 0) +- `src.ai_client._repair_minimax_history` (line 0) +- `src.ai_client._repair_anthropic_history` (line 0) +- `src.ai_client._repair_deepseek_history` (line 0) +- `src.ai_client.ollama_chat` (line 0) +- `src.ai_client._execute_single_tool_call_async` (line 0) +- `src.ai_client._strip_stale_file_refreshes` (line 0) ### `src\app_controller.py` (5 consumers) -- `src.app_controller._start_track_logic_result` (line 0) -- `src.app_controller._on_comms_entry` (line 0) - `src.app_controller._start_track_logic` (line 0) -- `src.app_controller._refresh_api_metrics` (line 0) +- `src.app_controller._start_track_logic_result` (line 0) - `src.app_controller._offload_entry_payload` (line 0) +- `src.app_controller._refresh_api_metrics` (line 0) +- `src.app_controller._on_comms_entry` (line 0) ### `src\models.py` (2 consumers) -- `src.models.from_dict` (line 0) - `src.models._save_config_to_disk` (line 0) +- `src.models.from_dict` (line 0) ### `src\project_manager.py` (5 consumers) -- `src.project_manager.entry_to_str` (line 0) -- `src.project_manager.flat_config` (line 0) -- `src.project_manager.save_project` (line 0) - `src.project_manager.migrate_from_legacy_config` (line 0) +- `src.project_manager.save_project` (line 0) +- `src.project_manager.flat_config` (line 0) - `src.project_manager.format_discussion` (line 0) +- `src.project_manager.entry_to_str` (line 0) ## 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 | |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| `_add_history_cache_breakpoint` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_start_track_logic_result` | . | . | . | . | . | 2 | 2 | . | . | . | . | . | . | 1 | . | 1 | 1 | 1 | 4 | . | -| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_on_comms_entry` | . | . | 1 | 1 | 1 | . | . | 4 | 4 | . | . | 1 | . | . | . | . | . | . | . | . | -| `_trim_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | -| `_estimate_message_tokens` | 1 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | | `_strip_private_keys` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_build_files_section_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | -| `_pre_dispatch` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_start_track_logic` | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | . | 1 | . | -| `_estimate_prompt_tokens` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | | `migrate_from_legacy_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic` | . | . | . | . | . | . | . | . | . | . | 1 | . | . | . | . | . | . | . | 1 | . | +| `_trim_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_append_comms` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `save_project` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_start_track_logic_result` | . | . | . | . | . | 2 | 2 | . | . | . | . | . | . | 1 | . | 1 | 1 | 1 | 4 | . | +| `flat_config` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_estimate_prompt_tokens` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_estimate_message_tokens` | 1 | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_tier3_context` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_save_config_to_disk` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | | `run` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | | `_refresh_api_metrics` | . | 1 | . | . | . | . | . | . | . | 1 | . | . | 1 | . | 1 | . | . | . | . | . | -| `format_discussion` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_offload_entry_payload` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_add_bleed_derived` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_trim_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_on_comms_entry` | . | . | 1 | 1 | 1 | . | . | 4 | 4 | . | . | 1 | . | . | . | . | . | . | . | . | | `_invalidate_token_estimate` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_dashscope_call` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `from_dict` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_add_history_cache_breakpoint` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_pre_dispatch` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `build_markdown_no_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_build_files_section_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_repair_minimax_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | +| `_repair_anthropic_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | +| `_repair_deepseek_history` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | 1 | +| `build_markdown_from_items` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `entry_to_str` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `ollama_chat` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | +| `_execute_single_tool_call_async` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | | `_strip_stale_file_refreshes` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_strip_cache_controls` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | -| `_append_comms` | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | _... 33 more fields_ @@ -268,10 +268,10 @@ _... 33 more fields_ | `pop` | 3 | hot | | `append` | 3 | hot | | `ai_status` | 2 | used | -| `session_usage` | 2 | used | | `files` | 2 | used | -| `content` | 1 | used | -| `marker` | 1 | used | +| `session_usage` | 2 | used | +| `_start_track_logic_result` | 1 | used | +| `discussion` | 1 | used | | `context_files` | 1 | used | | `_pending_gui_tasks_lock` | 1 | used | | `_topological_sort_tickets_result` | 1 | used | @@ -287,17 +287,15 @@ _... 33 more fields_ | `_pending_gui_tasks` | 1 | used | | `mma_step_mode` | 1 | used | | `active_project_path` | 1 | used | -| `local_ts` | 1 | used | -| `_offload_entry_payload` | 1 | used | -| `ui_auto_add_history` | 1 | used | -| `_pending_comms_lock` | 1 | used | -| `_pending_history_adds_lock` | 1 | used | -| `_token_history` | 1 | used | -| `_pending_comms` | 1 | used | -| `_pending_history_adds` | 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 | -| `_start_track_logic_result` | 1 | used | -| `discussion` | 1 | used | | `output` | 1 | used | | `latency` | 1 | used | | `_recalculate_session_usage` | 1 | used | @@ -308,14 +306,16 @@ _... 33 more fields_ | `error` | 1 | used | | `_update_cached_stats` | 1 | used | | `usage` | 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 | +| `_pending_history_adds_lock` | 1 | used | +| `_token_history` | 1 | used | +| `_pending_comms` | 1 | used | +| `_pending_history_adds` | 1 | used | +| `content` | 1 | used | +| `marker` | 1 | used | | `items` | 1 | used | ## Optimization candidates @@ -332,48 +332,48 @@ Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10 | function | pattern | field_accesses | confidence | |---|---|---|---| -| `src.ai_client._add_history_cache_breakpoint` | `whole_struct` | | low | -| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | -| `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.project_manager.entry_to_str` | `whole_struct` | `get`=4 | 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.ai_client._trim_minimax_history` | `whole_struct` | `pop`=4 | high | -| `src.aggregate.build_tier3_context` | `whole_struct` | | low | -| `src.ai_client.ollama_chat` | `whole_struct` | | low | -| `src.project_manager.flat_config` | `whole_struct` | `get`=7 | high | -| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | -| `src.ai_client._estimate_message_tokens` | `mixed` | `_est_tokens`=1, `get`=2 | high | | `src.ai_client._strip_private_keys` | `whole_struct` | | low | -| `src.aggregate._build_files_section_from_items` | `whole_struct` | | low | -| `src.models._save_config_to_disk` | `whole_struct` | | low | -| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | -| `src.ai_client._pre_dispatch` | `whole_struct` | | low | -| `src.app_controller._start_track_logic` | `mixed` | `_start_track_logic_result`=1, `ai_status`=1 | high | -| `src.ai_client._estimate_prompt_tokens` | `whole_struct` | | low | -| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | -| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | | `src.project_manager.migrate_from_legacy_config` | `whole_struct` | `get`=2 | high | +| `src.app_controller._start_track_logic` | `mixed` | `_start_track_logic_result`=1, `ai_status`=1 | high | +| `src.ai_client._trim_minimax_history` | `whole_struct` | `pop`=4 | high | +| `src.ai_client._append_comms` | `whole_struct` | | low | +| `src.ai_client._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | +| `src.project_manager.save_project` | `mixed` | `discussion`=2, `files`=3 | high | +| `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.project_manager.flat_config` | `whole_struct` | `get`=7 | high | +| `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._estimate_prompt_tokens` | `whole_struct` | | low | +| `src.ai_client._estimate_message_tokens` | `mixed` | `_est_tokens`=1, `get`=2 | high | +| `src.aggregate.build_tier3_context` | `whole_struct` | | low | +| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | +| `src.project_manager.format_discussion` | `whole_struct` | | low | +| `src.app_controller._offload_entry_payload` | `whole_struct` | | low | +| `src.models._save_config_to_disk` | `whole_struct` | | low | | `src.aggregate.run` | `field_by_field` | `output`=1, `files`=2, `get`=7 | high | | `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.project_manager.format_discussion` | `whole_struct` | | low | -| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | -| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | -| `src.app_controller._offload_entry_payload` | `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._trim_anthropic_history` | `whole_struct` | `pop`=5 | high | -| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | -| `src.ai_client._dashscope_call` | `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.ai_client._invalidate_token_estimate` | `whole_struct` | `pop`=1 | high | +| `src.ai_client._dashscope_call` | `whole_struct` | | low | +| `src.models.from_dict` | `mixed` | `content`=1, `marker`=1 | high | +| `src.ai_client._add_history_cache_breakpoint` | `whole_struct` | | low | +| `src.ai_client._pre_dispatch` | `whole_struct` | | low | +| `src.aggregate.build_markdown_no_history` | `whole_struct` | | low | +| `src.aggregate._build_files_section_from_items` | `whole_struct` | | low | +| `src.ai_client._repair_minimax_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._repair_anthropic_history` | `whole_struct` | `append`=1 | high | +| `src.ai_client._repair_deepseek_history` | `whole_struct` | `append`=1 | high | +| `src.aggregate.build_markdown_from_items` | `whole_struct` | | low | +| `src.project_manager.entry_to_str` | `whole_struct` | `get`=4 | high | +| `src.ai_client.ollama_chat` | `whole_struct` | | low | +| `src.ai_client._execute_single_tool_call_async` | `mixed` | `get`=2, `items`=1 | high | | `src.ai_client._strip_stale_file_refreshes` | `whole_struct` | | low | -| `src.ai_client._strip_cache_controls` | `whole_struct` | | low | -| `src.ai_client._append_comms` | `whole_struct` | | low | ### Frequency evidence | function | frequency | source | note | |---|---|---|---| -| `src.api_hook_client.get_gui_diagnostics` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | -| `src.app_controller.get_gui_state` | `per_turn` | `static_analysis` | producer from src\app_controller.py | -| `src.app_controller._api_get_api_project` | `per_turn` | `static_analysis` | producer from src\app_controller.py | -| `src.api_hook_client.get_node_status` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | -| `src.api_hook_client.post_session` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller._api_status` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.app_controller.get_performance` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.api_hook_client.get_financial_metrics` | `per_turn` | `static_analysis` | producer from src\api_hook_client.py | +| `src.app_controller._api_get_mma_status` | `per_turn` | `static_analysis` | producer from src\app_controller.py | +| `src.api_hook_client.get_mma_status` | `per_turn` | `static_analysis` | producer from src\api_hook_client.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 76bf6404..166bc058 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 @@ -2,119 +2,119 @@ Metadata: Metadata |- kind: typealias |- memory_dim: discussion |- producers: [77] -| |- src.api_hook_client.get_gui_diagnostics (producer) -| |- src.app_controller.get_gui_state (producer) -| |- src.app_controller._api_get_api_project (producer) -| |- src.api_hook_client.get_node_status (producer) -| |- src.api_hook_client.post_session (producer) +| |- src.app_controller._api_status (producer) +| |- src.app_controller.get_performance (producer) | |- src.api_hook_client.get_financial_metrics (producer) -| |- src.api_hook_client.get_patch_status (producer) -| |- src.app_controller._offload_entry_payload (producer) -| |- src.ai_client._send_cli_round_result (producer) -| |- src.api_hook_client.get_startup_timeline (producer) -| |- src.api_hook_client.get_project (producer) -| |- src.app_controller.get_session_insights (producer) -| |- src.app_controller.generate (producer) +| |- src.app_controller._api_get_mma_status (producer) +| |- src.api_hook_client.get_mma_status (producer) +| |- src.api_hook_client.set_value (producer) +| |- src.ai_client._parse_tool_args_result (producer) +| |- src.api_hook_client.get_system_telemetry (producer) +| |- src.app_controller.get_api_project (producer) +| |- src.ai_client._load_credentials (producer) +| |- src.project_manager.load_history (producer) +| |- src.models._load_config_from_disk (producer) +| |- src.api_hook_client.get_context_state (producer) +| |- src.api_hook_client.get_session (producer) | |- src.ai_client.get_token_stats (producer) | |- src.api_hook_client.drag (producer) -| |- src.project_manager.flat_config (producer) +| |- src.api_hook_client.post_gui (producer) +| |- src.app_controller.get_session (producer) | |- src.app_controller.get_api_session (producer) -| |- src.app_controller.get_mma_status (producer) -| |- src.project_manager.load_project (producer) -| |- src.api_hook_client.apply_patch (producer) -| |- src.api_hook_client.get_context_state (producer) +| |- src.ai_client._send_cli_round_result (producer) +| |- src.api_hook_client.get_patch_status (producer) | |- src.api_hook_client.get_status (producer) -| |- src.project_manager.str_to_entry (producer) -| |- src.project_manager.migrate_from_legacy_config (producer) -| |- src.api_hook_client.post_project (producer) +| |- src.api_hook_client.get_gui_diagnostics (producer) +| |- src.api_hook_client.select_tab (producer) | |- src.app_controller._api_token_stats (producer) -| |- src.app_controller.token_stats (producer) -| |- src.app_controller.status (producer) -| |- src.api_hook_client.get_system_telemetry (producer) -| |- src.api_hook_client.push_event (producer) -| |- src.api_hook_client.get_gui_state (producer) -| |- src.app_controller._api_get_diagnostics (producer) -| |- src.app_controller._api_get_api_session (producer) +| |- src.app_controller._offload_entry_payload (producer) +| |- src.project_manager.default_discussion (producer) +| |- src.api_hook_client.get_node_status (producer) +| |- src.app_controller.get_mma_status (producer) +| |- src.app_controller.wait (producer) +| |- src.api_hook_client.wait_for_project_switch (producer) +| |- src.ai_client.ollama_chat (producer) +| |- src.api_hook_client.get_warmup_status (producer) +| |- src.ai_client._add_bleed_derived (producer) | |- src.api_hook_client.get_io_pool_status (producer) -| |- src.app_controller.get_performance (producer) -| |- src.api_hook_client.get_project_switch_status (producer) -| |- src.models.to_dict (producer) -| |- src.app_controller.get_api_project (producer) -| |- src.app_controller._api_get_session (producer) -| |- src.app_controller.get_context (producer) -| |- src.api_hook_client.click (producer) -| |- src.api_hook_client.get_mma_workers (producer) -| |- src.ai_client._load_credentials (producer) +| |- src.ai_client._content_block_to_dict (producer) +| |- src.app_controller.get_session_insights (producer) +| |- src.api_hook_client.get_gui_health (producer) +| |- src.project_manager.migrate_from_legacy_config (producer) +| |- src.app_controller._api_generate (producer) +| |- src.app_controller.generate (producer) +| |- src.app_controller.token_stats (producer) +| |- src.project_manager.flat_config (producer) | |- src.api_hook_client.trigger_patch (producer) | |- src.api_hook_client.select_list_item (producer) -| |- src.project_manager.load_history (producer) -| |- src.api_hook_client.select_tab (producer) -| |- src.api_hook_client.reject_patch (producer) -| |- src.app_controller._api_generate (producer) -| |- src.app_controller.load_config (producer) -| |- src.ai_client.get_gemini_cache_stats (producer) -| |- src.project_manager.default_project (producer) -| |- src.app_controller.wait (producer) -| |- src.app_controller._api_status (producer) -| |- src.app_controller._api_get_mma_status (producer) -| |- src.ai_client.ollama_chat (producer) -| |- src.api_hook_client.wait_for_project_switch (producer) -| |- src.ai_client._parse_tool_args_result (producer) -| |- src.api_hook_client.get_mma_status (producer) -| |- src.app_controller._api_get_context (producer) -| |- src.api_hook_client.get_gui_health (producer) -| |- src.models._load_config_from_disk (producer) -| |- src.api_hook_client.get_session (producer) -| |- src.app_controller.get_session (producer) +| |- src.api_hook_client.click (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_project_switch_status (producer) +| |- src.app_controller._api_get_api_project (producer) +| |- src.app_controller.get_gui_state (producer) | |- src.app_controller._api_get_performance (producer) -| |- src.api_hook_client.post_gui (producer) -| |- src.ai_client._content_block_to_dict (producer) +| |- src.project_manager.str_to_entry (producer) +| |- src.api_hook_client.post_session (producer) +| |- src.api_hook_client.get_startup_timeline (producer) +| |- src.api_hook_client.get_mma_workers (producer) +| |- src.app_controller._api_get_api_session (producer) +| |- src.app_controller._api_get_context (producer) +| |- src.app_controller.get_context (producer) | |- src.api_hook_client.right_click (producer) -| |- src.app_controller._api_get_gui_state (producer) -| |- src.api_hook_client.get_performance (producer) -| |- src.api_hook_client.get_warmup_wait (producer) -| |- src.ai_client._add_bleed_derived (producer) -| |- src.api_hook_client.set_value (producer) -| |- src.app_controller.get_diagnostics (producer) -| |- src.project_manager.default_discussion (producer) | |- src.ai_client._dashscope_call (producer) -| |- src.api_hook_client.get_warmup_status (producer) +| |- src.api_hook_client.get_performance (producer) +| |- src.app_controller.get_diagnostics (producer) +| |- src.api_hook_client.apply_patch (producer) +| |- src.app_controller._api_get_diagnostics (producer) +| |- src.project_manager.load_project (producer) +| |- src.app_controller.status (producer) +| |- src.app_controller.load_config (producer) +| |- src.api_hook_client.reject_patch (producer) +| |- src.api_hook_client.get_project (producer) +| |- src.project_manager.default_project (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.app_controller._api_get_gui_state (producer) +| |- src.app_controller._api_get_session (producer) +| |- src.ai_client.get_gemini_cache_stats (producer) +| |- src.api_hook_client.get_warmup_wait (producer) +| |- src.api_hook_client.get_gui_state (producer) +| |- src.api_hook_client.push_event (producer) |- consumers: [35] -| |- src.ai_client._add_history_cache_breakpoint (consumer) -| |- src.models.from_dict (consumer) -| |- src.app_controller._start_track_logic_result (consumer) -| |- src.project_manager.entry_to_str (consumer) -| |- src.app_controller._on_comms_entry (consumer) -| |- src.ai_client._trim_minimax_history (consumer) -| |- src.aggregate.build_tier3_context (consumer) -| |- src.ai_client.ollama_chat (consumer) -| |- src.project_manager.flat_config (consumer) -| |- src.ai_client._repair_minimax_history (consumer) -| |- src.ai_client._estimate_message_tokens (consumer) | |- src.ai_client._strip_private_keys (consumer) -| |- src.aggregate._build_files_section_from_items (consumer) -| |- src.models._save_config_to_disk (consumer) -| |- src.ai_client._repair_deepseek_history (consumer) -| |- src.ai_client._pre_dispatch (consumer) -| |- src.app_controller._start_track_logic (consumer) -| |- src.ai_client._estimate_prompt_tokens (consumer) -| |- src.project_manager.save_project (consumer) -| |- src.ai_client._repair_anthropic_history (consumer) | |- src.project_manager.migrate_from_legacy_config (consumer) +| |- src.app_controller._start_track_logic (consumer) +| |- src.ai_client._trim_minimax_history (consumer) +| |- src.ai_client._append_comms (consumer) +| |- src.ai_client._trim_anthropic_history (consumer) +| |- src.project_manager.save_project (consumer) +| |- src.app_controller._start_track_logic_result (consumer) +| |- src.project_manager.flat_config (consumer) +| |- src.ai_client._add_bleed_derived (consumer) +| |- src.ai_client._estimate_prompt_tokens (consumer) +| |- src.ai_client._estimate_message_tokens (consumer) +| |- src.aggregate.build_tier3_context (consumer) +| |- src.ai_client._strip_cache_controls (consumer) +| |- src.project_manager.format_discussion (consumer) +| |- src.app_controller._offload_entry_payload (consumer) +| |- src.models._save_config_to_disk (consumer) | |- src.aggregate.run (consumer) | |- src.app_controller._refresh_api_metrics (consumer) -| |- src.project_manager.format_discussion (consumer) -| |- src.aggregate.build_markdown_from_items (consumer) -| |- src.aggregate.build_markdown_no_history (consumer) -| |- src.app_controller._offload_entry_payload (consumer) -| |- src.ai_client._add_bleed_derived (consumer) -| |- src.ai_client._trim_anthropic_history (consumer) -| |- src.ai_client._execute_single_tool_call_async (consumer) -| |- src.ai_client._dashscope_call (consumer) +| |- src.app_controller._on_comms_entry (consumer) | |- src.ai_client._invalidate_token_estimate (consumer) +| |- src.ai_client._dashscope_call (consumer) +| |- src.models.from_dict (consumer) +| |- src.ai_client._add_history_cache_breakpoint (consumer) +| |- src.ai_client._pre_dispatch (consumer) +| |- src.aggregate.build_markdown_no_history (consumer) +| |- src.aggregate._build_files_section_from_items (consumer) +| |- src.ai_client._repair_minimax_history (consumer) +| |- src.ai_client._repair_anthropic_history (consumer) +| |- src.ai_client._repair_deepseek_history (consumer) +| |- src.aggregate.build_markdown_from_items (consumer) +| |- src.project_manager.entry_to_str (consumer) +| |- src.ai_client.ollama_chat (consumer) +| |- src.ai_client._execute_single_tool_call_async (consumer) | |- src.ai_client._strip_stale_file_refreshes (consumer) -| |- src.ai_client._strip_cache_controls (consumer) -| |- src.ai_client._append_comms (consumer) |- access_pattern: whole_struct |- frequency: per_turn |- result_coverage: 77 producers, 35 consumers 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 80c0107c..b4208028 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 @@ -6,118 +6,118 @@ Functions that are producers or consumers of each aggregate, grouped by file. | role | fqname | file | |---|---|---| -| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | -| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | -| producer | `src.app_controller._api_get_api_project` | `src\app_controller.py` | -| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_status` | `src\app_controller.py` | +| producer | `src.app_controller.get_performance` | `src\app_controller.py` | | producer | `src.api_hook_client.get_financial_metrics` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | -| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | -| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_project` | `src\api_hook_client.py` | -| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | -| producer | `src.app_controller.generate` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | +| producer | `src.ai_client._parse_tool_args_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_api_project` | `src\app_controller.py` | +| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.project_manager.load_history` | `src\project_manager.py` | +| producer | `src.models._load_config_from_disk` | `src\models.py` | +| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | | producer | `src.ai_client.get_token_stats` | `src\ai_client.py` | | producer | `src.api_hook_client.drag` | `src\api_hook_client.py` | -| producer | `src.project_manager.flat_config` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_session` | `src\app_controller.py` | | producer | `src.app_controller.get_api_session` | `src\app_controller.py` | -| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | -| producer | `src.project_manager.load_project` | `src\project_manager.py` | -| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_context_state` | `src\api_hook_client.py` | +| producer | `src.ai_client._send_cli_round_result` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_patch_status` | `src\api_hook_client.py` | | producer | `src.api_hook_client.get_status` | `src\api_hook_client.py` | -| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | -| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | -| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_diagnostics` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | | producer | `src.app_controller._api_token_stats` | `src\app_controller.py` | -| producer | `src.app_controller.token_stats` | `src\app_controller.py` | -| producer | `src.app_controller.status` | `src\app_controller.py` | -| producer | `src.api_hook_client.get_system_telemetry` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | -| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | -| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | +| producer | `src.api_hook_client.get_node_status` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_mma_status` | `src\app_controller.py` | +| producer | `src.app_controller.wait` | `src\app_controller.py` | +| producer | `src.api_hook_client.wait_for_project_switch` | `src\api_hook_client.py` | +| producer | `src.ai_client.ollama_chat` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | +| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | | producer | `src.api_hook_client.get_io_pool_status` | `src\api_hook_client.py` | -| producer | `src.app_controller.get_performance` | `src\app_controller.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.app_controller.get_api_project` | `src\app_controller.py` | -| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | -| producer | `src.app_controller.get_context` | `src\app_controller.py` | -| producer | `src.api_hook_client.click` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | -| producer | `src.ai_client._load_credentials` | `src\ai_client.py` | +| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.app_controller.get_session_insights` | `src\app_controller.py` | +| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | +| producer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| producer | `src.app_controller._api_generate` | `src\app_controller.py` | +| producer | `src.app_controller.generate` | `src\app_controller.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.trigger_patch` | `src\api_hook_client.py` | | producer | `src.api_hook_client.select_list_item` | `src\api_hook_client.py` | -| producer | `src.project_manager.load_history` | `src\project_manager.py` | -| producer | `src.api_hook_client.select_tab` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.reject_patch` | `src\api_hook_client.py` | -| producer | `src.app_controller._api_generate` | `src\app_controller.py` | -| producer | `src.app_controller.load_config` | `src\app_controller.py` | -| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | -| producer | `src.project_manager.default_project` | `src\project_manager.py` | -| producer | `src.app_controller.wait` | `src\app_controller.py` | -| producer | `src.app_controller._api_status` | `src\app_controller.py` | -| producer | `src.app_controller._api_get_mma_status` | `src\app_controller.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._parse_tool_args_result` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_mma_status` | `src\api_hook_client.py` | -| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | -| producer | `src.api_hook_client.get_gui_health` | `src\api_hook_client.py` | -| producer | `src.models._load_config_from_disk` | `src\models.py` | -| producer | `src.api_hook_client.get_session` | `src\api_hook_client.py` | -| producer | `src.app_controller.get_session` | `src\app_controller.py` | +| producer | `src.api_hook_client.click` | `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.app_controller._api_get_api_project` | `src\app_controller.py` | +| producer | `src.app_controller.get_gui_state` | `src\app_controller.py` | | producer | `src.app_controller._api_get_performance` | `src\app_controller.py` | -| producer | `src.api_hook_client.post_gui` | `src\api_hook_client.py` | -| producer | `src.ai_client._content_block_to_dict` | `src\ai_client.py` | +| producer | `src.project_manager.str_to_entry` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_session` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_startup_timeline` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_mma_workers` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_api_session` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_context` | `src\app_controller.py` | +| producer | `src.app_controller.get_context` | `src\app_controller.py` | | producer | `src.api_hook_client.right_click` | `src\api_hook_client.py` | -| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | -| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | -| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | -| producer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | -| producer | `src.api_hook_client.set_value` | `src\api_hook_client.py` | -| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | -| producer | `src.project_manager.default_discussion` | `src\project_manager.py` | | producer | `src.ai_client._dashscope_call` | `src\ai_client.py` | -| producer | `src.api_hook_client.get_warmup_status` | `src\api_hook_client.py` | -| consumer | `src.ai_client._add_history_cache_breakpoint` | `src\ai_client.py` | -| consumer | `src.models.from_dict` | `src\models.py` | -| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | -| consumer | `src.project_manager.entry_to_str` | `src\project_manager.py` | -| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | -| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | -| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | -| consumer | `src.ai_client.ollama_chat` | `src\ai_client.py` | -| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | -| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | -| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_performance` | `src\api_hook_client.py` | +| producer | `src.app_controller.get_diagnostics` | `src\app_controller.py` | +| producer | `src.api_hook_client.apply_patch` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_diagnostics` | `src\app_controller.py` | +| producer | `src.project_manager.load_project` | `src\project_manager.py` | +| producer | `src.app_controller.status` | `src\app_controller.py` | +| producer | `src.app_controller.load_config` | `src\app_controller.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.project_manager.default_project` | `src\project_manager.py` | +| producer | `src.api_hook_client.post_project` | `src\api_hook_client.py` | +| producer | `src.app_controller._api_get_gui_state` | `src\app_controller.py` | +| producer | `src.app_controller._api_get_session` | `src\app_controller.py` | +| producer | `src.ai_client.get_gemini_cache_stats` | `src\ai_client.py` | +| producer | `src.api_hook_client.get_warmup_wait` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.get_gui_state` | `src\api_hook_client.py` | +| producer | `src.api_hook_client.push_event` | `src\api_hook_client.py` | | consumer | `src.ai_client._strip_private_keys` | `src\ai_client.py` | -| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | -| consumer | `src.models._save_config_to_disk` | `src\models.py` | -| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | -| consumer | `src.ai_client._pre_dispatch` | `src\ai_client.py` | -| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | -| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | -| consumer | `src.project_manager.save_project` | `src\project_manager.py` | -| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | | consumer | `src.project_manager.migrate_from_legacy_config` | `src\project_manager.py` | +| consumer | `src.app_controller._start_track_logic` | `src\app_controller.py` | +| consumer | `src.ai_client._trim_minimax_history` | `src\ai_client.py` | +| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | +| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | +| consumer | `src.project_manager.save_project` | `src\project_manager.py` | +| consumer | `src.app_controller._start_track_logic_result` | `src\app_controller.py` | +| consumer | `src.project_manager.flat_config` | `src\project_manager.py` | +| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | +| consumer | `src.ai_client._estimate_prompt_tokens` | `src\ai_client.py` | +| consumer | `src.ai_client._estimate_message_tokens` | `src\ai_client.py` | +| consumer | `src.aggregate.build_tier3_context` | `src\aggregate.py` | +| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | +| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | +| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | +| consumer | `src.models._save_config_to_disk` | `src\models.py` | | consumer | `src.aggregate.run` | `src\aggregate.py` | | consumer | `src.app_controller._refresh_api_metrics` | `src\app_controller.py` | -| consumer | `src.project_manager.format_discussion` | `src\project_manager.py` | -| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | -| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | -| consumer | `src.app_controller._offload_entry_payload` | `src\app_controller.py` | -| consumer | `src.ai_client._add_bleed_derived` | `src\ai_client.py` | -| consumer | `src.ai_client._trim_anthropic_history` | `src\ai_client.py` | -| consumer | `src.ai_client._execute_single_tool_call_async` | `src\ai_client.py` | -| consumer | `src.ai_client._dashscope_call` | `src\ai_client.py` | +| consumer | `src.app_controller._on_comms_entry` | `src\app_controller.py` | | consumer | `src.ai_client._invalidate_token_estimate` | `src\ai_client.py` | +| consumer | `src.ai_client._dashscope_call` | `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._pre_dispatch` | `src\ai_client.py` | +| consumer | `src.aggregate.build_markdown_no_history` | `src\aggregate.py` | +| consumer | `src.aggregate._build_files_section_from_items` | `src\aggregate.py` | +| consumer | `src.ai_client._repair_minimax_history` | `src\ai_client.py` | +| consumer | `src.ai_client._repair_anthropic_history` | `src\ai_client.py` | +| consumer | `src.ai_client._repair_deepseek_history` | `src\ai_client.py` | +| consumer | `src.aggregate.build_markdown_from_items` | `src\aggregate.py` | +| consumer | `src.project_manager.entry_to_str` | `src\project_manager.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.ai_client._strip_stale_file_refreshes` | `src\ai_client.py` | -| consumer | `src.ai_client._strip_cache_controls` | `src\ai_client.py` | -| consumer | `src.ai_client._append_comms` | `src\ai_client.py` | ## FileItem (0 producers + 0 consumers) @@ -127,9 +127,9 @@ _(no producers or consumers)_ | role | fqname | file | |---|---|---| +| consumer | `src.ai_client._build_file_context_text` | `src\ai_client.py` | | consumer | `src.ai_client._build_file_diff_text` | `src\ai_client.py` | | consumer | `src.ai_client._reread_file_items_result` | `src\ai_client.py` | -| consumer | `src.ai_client._build_file_context_text` | `src\ai_client.py` | ## CommsLogEntry (0 producers + 0 consumers) @@ -143,8 +143,8 @@ _(no producers or consumers)_ | role | fqname | file | |---|---|---| -| consumer | `src.provider_state.replace_all` | `src\provider_state.py` | | consumer | `src.provider_state.append` | `src\provider_state.py` | +| consumer | `src.provider_state.replace_all` | `src\provider_state.py` | ## History (0 producers + 0 consumers) diff --git a/docs/reports/code_path_audit/2026-06-22/candidates.md b/docs/reports/code_path_audit/2026-06-22/candidates.md index 28295fae..83232631 100644 --- a/docs/reports/code_path_audit/2026-06-22/candidates.md +++ b/docs/reports/code_path_audit/2026-06-22/candidates.md @@ -1,7 +1,11 @@ -# Candidate Aggregates +# Optimization Candidates -The 3 candidate aggregates (forward-compat placeholders for any_type_componentization_20260621, NOT on master). +Total candidates: 0 -- **ToolSpec**: candidate; would be detected after any_type_componentization_20260621 merges -- **ChatMessage**: candidate; would be detected after any_type_componentization_20260621 merges -- **ProviderHistory**: candidate; would be detected after any_type_componentization_20260621 merges \ No newline at end of file +_(no optimization candidates currently generated)_ + +## Candidate placeholder aggregates + +- `ToolSpec`: candidate aggregate; would be detected after any_type_componentization_20260621 merges +- `ChatMessage`: candidate aggregate; would be detected after any_type_componentization_20260621 merges +- `ProviderHistory`: candidate aggregate; would be detected after any_type_componentization_20260621 merges 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 new file mode 100644 index 00000000..e799913e --- /dev/null +++ b/docs/reports/code_path_audit/2026-06-22/dead_fields.md @@ -0,0 +1,25 @@ +# Dead Field Analysis + +Fields that appear in producer return shapes but are never read by any consumer. + +### `Metadata` + +Fields read by at least one consumer: 53 + + +### `HistoryMessage` + +Fields read by at least one consumer: 2 + +| field | read count | +|---|---| +| `lock` | 2 | +| `messages` | 2 | + +### `ToolCall` + +Fields read by at least one consumer: 1 + +| 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 9b0ca358..551d8894 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 @@ -1,6 +1,32 @@ # Decomposition Matrix -## Top 10 candidates by estimated savings +## All aggregates ranked by current cost -| Rank | Aggregate | Direction | Est. savings (us) | Frequency | Effort | Priority | -|---|---|---|---|---|---|---| \ No newline at end of file +| Aggregate | Producers | Consumers | Struct fields | Current cost (us/turn) | Direction | Actionable savings (us/turn) | +|---|---|---|---|---|---|---| +| `Metadata` | 77 | 35 | 10 | 720 | `hold` | 0 | +| `FileItem` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | +| `FileItems` | 0 | 3 | 5 | 470 | `hold` | 70 | +| `CommsLogEntry` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | +| `CommsLog` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | +| `HistoryMessage` | 0 | 2 | 5 | 470 | `insufficient_data` | 0 | +| `History` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | +| `ToolDefinition` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | +| `ToolCall` | 1 | 1 | 5 | 470 | `hold` | 70 | +| `Result` | 0 | 0 | 5 | 470 | `insufficient_data` | 0 | + +## Aggregates flagged for refactoring + +_(no aggregates currently flagged for refactoring; most have 'hold' status)_ + +## Aggregates needing runtime profiling + +| 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 55e189ed..f7dcd263 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 @@ -15,5 +15,5 @@ Cross-aggregate analysis of which fields are accessed how often across the codeb | `Metadata` | `_pending_history_adds` | 4 | | `Metadata` | `ui_auto_add_history` | 3 | | `Metadata` | `append` | 3 | -| `Metadata` | `_pending_gui_tasks_lock` | 2 | +| `Metadata` | `discussion` | 2 | | `ToolCall` | `to_dict` | 1 | 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 new file mode 100644 index 00000000..f15769c4 --- /dev/null +++ b/docs/reports/code_path_audit/2026-06-22/hot_paths.md @@ -0,0 +1,36 @@ +# Hot Path Analysis + +Functions on the per-LLM-turn path (high-frequency consumers). + +## Per-aggregate hot consumers (top 5 by field access count) + +### `Metadata` + +| 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 | + +### `FileItems` + +| function | pattern | total field accesses | +|---|---|---| +| `src.ai_client._build_file_context_text` | `whole_struct` | 0 | +| `src.ai_client._build_file_diff_text` | `whole_struct` | 0 | +| `src.ai_client._reread_file_items_result` | `whole_struct` | 0 | + +### `HistoryMessage` + +| function | pattern | total field accesses | +|---|---|---| +| `src.provider_state.append` | `mixed` | 2 | +| `src.provider_state.replace_all` | `mixed` | 2 | + +### `ToolCall` + +| function | pattern | total field accesses | +|---|---|---| +| `src.openai_compatible._to_dict_tool_call` | `whole_struct` | 1 | 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 58891f94..145ae5f8 100644 --- a/docs/reports/code_path_audit/2026-06-22/summary.md +++ b/docs/reports/code_path_audit/2026-06-22/summary.md @@ -1,6 +1,13 @@ # Code Path & Data Pipeline Audit Summary -Generated for 13 aggregates +Generated for 13 aggregates on 2026-06-22 + +- **Real aggregates (in scope):** 10 +- **Candidate aggregates (placeholders):** 3 +- **Total producers:** 78 +- **Total consumers:** 41 +- **Total current cost (us/turn):** 4950 +- **Total actionable savings (us/turn):** 140 ## 4-mem-dim rollup @@ -9,18 +16,82 @@ Generated for 13 aggregates - **discussion** (6): Metadata, CommsLogEntry, CommsLog, HistoryMessage, History, ChatMessage - **unknown** (2): ToolSpec, ProviderHistory +## Per-aggregate memory_dim + access pattern + +| 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 | 3 | +| `History` | `typealias` | `discussion` | `mixed` | 0 | 0 | +| `HistoryMessage` | `typealias` | `discussion` | `mixed` | 0 | 2 | +| `Metadata` | `typealias` | `discussion` | `whole_struct` | 77 | 35 | +| `Result` | `typealias` | `control` | `mixed` | 0 | 0 | +| `ToolCall` | `typealias` | `control` | `whole_struct` | 1 | 1 | +| `ToolDefinition` | `typealias` | `control` | `mixed` | 0 | 0 | +| `ChatMessage` | `candidate_dataclass` | `discussion` | `mixed` | 0 | 0 | +| `ProviderHistory` | `candidate_dataclass` | `unknown` | `mixed` | 0 | 0 | +| `ToolSpec` | `candidate_dataclass` | `unknown` | `mixed` | 0 | 0 | + ## Cross-validation verdict -- **Metadata**: result_coverage=77 producers, 35 consumers; type_alias_coverage=130 sites; 0 typed (0%); 130 untyped (100%) -- **FileItem**: result_coverage=0 producers, 0 consumers; type_alias_coverage=0 sites -- **FileItems**: result_coverage=0 producers, 3 consumers; type_alias_coverage=0 sites -- **CommsLogEntry**: result_coverage=0 producers, 0 consumers; type_alias_coverage=0 sites -- **CommsLog**: result_coverage=0 producers, 0 consumers; type_alias_coverage=0 sites -- **HistoryMessage**: result_coverage=0 producers, 2 consumers; type_alias_coverage=4 sites; 0 typed (0%); 4 untyped (100%) -- **History**: result_coverage=0 producers, 0 consumers; type_alias_coverage=0 sites -- **ToolDefinition**: result_coverage=0 producers, 0 consumers; type_alias_coverage=0 sites -- **ToolCall**: result_coverage=1 producers, 1 consumers; type_alias_coverage=1 sites; 0 typed (0%); 1 untyped (100%) -- **Result**: result_coverage=0 producers, 0 consumers; type_alias_coverage=0 sites -- **ToolSpec**: result_coverage=; type_alias_coverage= -- **ChatMessage**: result_coverage=; type_alias_coverage= -- **ProviderHistory**: result_coverage=; type_alias_coverage= \ No newline at end of file +### `CommsLog` + +- **Result coverage:** 0 producers, 0 consumers +- **Type alias coverage:** 0 sites +- **Cross-audit findings (total sites):** 0 + +### `CommsLogEntry` + +- **Result coverage:** 0 producers, 0 consumers +- **Type alias coverage:** 0 sites +- **Cross-audit findings (total sites):** 0 + +### `FileItem` + +- **Result coverage:** 0 producers, 0 consumers +- **Type alias coverage:** 0 sites +- **Cross-audit findings (total sites):** 0 + +### `FileItems` + +- **Result coverage:** 0 producers, 3 consumers +- **Type alias coverage:** 0 sites +- **Cross-audit findings (total sites):** 0 + +### `History` + +- **Result coverage:** 0 producers, 0 consumers +- **Type alias coverage:** 0 sites +- **Cross-audit findings (total sites):** 0 + +### `HistoryMessage` + +- **Result coverage:** 0 producers, 2 consumers +- **Type alias coverage:** 4 sites; 0 typed (0%); 4 untyped (100%) +- **Cross-audit findings (total sites):** 0 + +### `Metadata` + +- **Result coverage:** 77 producers, 35 consumers +- **Type alias coverage:** 130 sites; 0 typed (0%); 130 untyped (100%) +- **Cross-audit findings (total sites):** 1 + +### `Result` + +- **Result coverage:** 0 producers, 0 consumers +- **Type alias coverage:** 0 sites +- **Cross-audit findings (total sites):** 0 + +### `ToolCall` + +- **Result coverage:** 1 producers, 1 consumers +- **Type alias coverage:** 1 sites; 0 typed (0%); 1 untyped (100%) +- **Cross-audit findings (total sites):** 0 + +### `ToolDefinition` + +- **Result coverage:** 0 producers, 0 consumers +- **Type alias coverage:** 0 sites +- **Cross-audit findings (total sites):** 0 diff --git a/scripts/tier2/artifacts/code_path_audit_20260607/_fix_rollups.py b/scripts/tier2/artifacts/code_path_audit_20260607/_fix_rollups.py new file mode 100644 index 00000000..db2ff863 --- /dev/null +++ b/scripts/tier2/artifacts/code_path_audit_20260607/_fix_rollups.py @@ -0,0 +1,25 @@ +with open(r'C:\projects\manual_slop_tier2\src\code_path_audit_rollups.py', 'r') as f: + lines = f.readlines() + +# Lines 263-265 need fixing +# Line 263: ' for i, ...:' - keep as is (1 space indent for top-level for) +# Line 264: ' lines.append...' - should be 2 spaces (inside for body) +# Line 265: ' lines.append("")' - should be 2 spaces (inside for body) + +# Find and fix all lines 264+ that are at 3-space indent inside a for loop +new_lines = [] +in_for = False +for i, line in enumerate(lines): + if i == 263: + in_for = True + new_lines.append(line) + continue + if in_for and line.startswith(' ') and not line.startswith(' '): + # Reduce 3-space indent to 2-space + new_lines.append(' ' + line[3:]) + else: + new_lines.append(line) + +with open(r'C:\projects\manual_slop_tier2\src\code_path_audit_rollups.py', 'w') as f: + f.writelines(new_lines) +print('fixed') \ No newline at end of file diff --git a/scripts/tier2/artifacts/code_path_audit_20260607/_fix_rollups2.py b/scripts/tier2/artifacts/code_path_audit_20260607/_fix_rollups2.py new file mode 100644 index 00000000..c904fd45 --- /dev/null +++ b/scripts/tier2/artifacts/code_path_audit_20260607/_fix_rollups2.py @@ -0,0 +1,33 @@ +"""Fix indentation in rollups file.""" +import re + +filepath = r'C:\projects\manual_slop_tier2\src\code_path_audit_rollups.py' + +with open(filepath, 'r') as f: + content = f.read() + +# Find all for loops and fix their body indent to be 2 spaces +# Pattern: at start of line, 2 spaces + "for " + ... + ":" then body should be 2-space indent too +# Currently the body has 3 spaces, we want 2 + +lines = content.split('\n') +new_lines = [] +for i, line in enumerate(lines): + stripped = line.lstrip() + indent = len(line) - len(stripped) + # Lines that start with 3 spaces and have content (likely inside a for loop body) + if indent == 3 and stripped: + # Check if previous line was a for/if/while (probably at 1 or 2 space indent) + if i > 0: + prev = lines[i-1] + prev_stripped = prev.rstrip() + if prev_stripped.endswith(':') and not prev_stripped.startswith('#'): + # This line is inside a for/if body, reduce indent by 1 + new_lines.append(' ' + stripped) + continue + new_lines.append(line) + +with open(filepath, 'w') as f: + f.write('\n'.join(new_lines)) + +print('fixed') \ No newline at end of file diff --git a/scripts/tier2/artifacts/code_path_audit_20260607/_fix_rollups3.py b/scripts/tier2/artifacts/code_path_audit_20260607/_fix_rollups3.py new file mode 100644 index 00000000..ac78690c --- /dev/null +++ b/scripts/tier2/artifacts/code_path_audit_20260607/_fix_rollups3.py @@ -0,0 +1,43 @@ +"""Brute-force normalize indentation: every line at N spaces should be at the deepest appropriate indent.""" +import re + +filepath = r'C:\projects\manual_slop_tier2\src\code_path_audit_rollups.py' + +with open(filepath, 'r') as f: + lines = f.readlines() + +# Walk lines, track expected indent depth via for/if/while/with/def/class +# and fix each line's indent to match expected +def get_indent(line): + return len(line) - len(line.lstrip(' ')) + +new_lines = [] +expected_indent = 0 +prev_block_open = False +for i, line in enumerate(lines): + stripped = line.lstrip() + if not stripped or stripped.startswith('#'): + new_lines.append(line) + continue + cur_indent = get_indent(line) + if cur_indent > expected_indent + 2: + # Too deep — reset to expected + new_lines.append(' ' * (expected_indent + 2) + stripped) + elif cur_indent < expected_indent: + # Dedent + new_lines.append(' ' * expected_indent + stripped) + expected_indent = cur_indent + else: + new_lines.append(line) + # If line ends with ':', increase expected for next line + if stripped.rstrip().endswith(':') and not stripped.startswith(' '): + expected_indent += 2 + # If line is a 'return' or 'pass' or endswith, decrease expected + elif stripped.startswith(('return ', 'pass', 'break', 'continue', 'raise ')): + # next line should be at or above this indent + pass + +with open(filepath, 'w') as f: + f.writelines(new_lines) + +print('normalized') \ No newline at end of file diff --git a/src/code_path_audit.py b/src/code_path_audit.py index 1708b437..dd287251 100644 --- a/src/code_path_audit.py +++ b/src/code_path_audit.py @@ -1235,10 +1235,24 @@ def render_rollups(summary: AuditSummary, output_dir: Path) -> dict[str, str]: cand_lines.append(f"- **{p.name}**: candidate; would be detected after any_type_componentization_20260621 merges") candidates_path.write_text("\n".join(cand_lines), encoding="utf-8") from src.code_path_audit_render import render_field_usage_rollup, render_call_graph_rollup + from src.code_path_audit_rollups import ( + render_decomposition_matrix_rich, + render_summary_rich, + render_candidates_rich, + render_hot_path_rollup, + render_dead_field_rollup, + ) field_usage_path = output_dir / "field_usage.md" field_usage_path.write_text(render_field_usage_rollup(profiles), encoding="utf-8") call_graph_path = output_dir / "call_graph.md" call_graph_path.write_text(render_call_graph_rollup(profiles), encoding="utf-8") + hot_path_path = output_dir / "hot_paths.md" + hot_path_path.write_text(render_hot_path_rollup(profiles), encoding="utf-8") + dead_field_path = output_dir / "dead_fields.md" + dead_field_path.write_text(render_dead_field_rollup(profiles), encoding="utf-8") + summary_path.write_text(render_summary_rich(profiles), encoding="utf-8") + decomposition_matrix_path.write_text(render_decomposition_matrix_rich(profiles), encoding="utf-8") + candidates_path.write_text(render_candidates_rich(profiles), encoding="utf-8") return { "summary.md": str(summary_path), "cross_audit_summary.md": str(cross_audit_path), @@ -1246,6 +1260,8 @@ def render_rollups(summary: AuditSummary, output_dir: Path) -> dict[str, str]: "candidates.md": str(candidates_path), "field_usage.md": str(field_usage_path), "call_graph.md": str(call_graph_path), + "hot_paths.md": str(hot_path_path), + "dead_fields.md": str(dead_field_path), } def code_path_audit_v2( diff --git a/src/code_path_audit_rollups.py b/src/code_path_audit_rollups.py new file mode 100644 index 00000000..0553e3ef --- /dev/null +++ b/src/code_path_audit_rollups.py @@ -0,0 +1,195 @@ +"""Additional rollups for code_path_audit v2.""" +from __future__ import annotations +from src.code_path_audit import AggregateProfile + + +def render_decomposition_matrix_rich(profiles): + lines = ["# Decomposition Matrix", ""] + lines.append("## All aggregates ranked by current cost") + lines.append("") + lines.append("| Aggregate | Producers | Consumers | Struct fields | Current cost (us/turn) | Direction | Actionable savings (us/turn) |") + lines.append("|---|---|---|---|---|---|---|") + real_profiles = [p for p in profiles if not p.is_candidate] + sorted_profiles = sorted(real_profiles, key=lambda p: p.decomposition_cost.current_cost_estimate, reverse=True) + for p in sorted_profiles: + dc = p.decomposition_cost + actionable = dc.componentize_savings + dc.unify_savings + lines.append(f"| `{p.name}` | {len(p.producers)} | {len(p.consumers)} | {dc.struct_field_count} | {dc.current_cost_estimate} | `{dc.recommended_direction}` | {actionable} |") + lines.append("") + lines.append("## Aggregates flagged for refactoring") + lines.append("") + flaggable = [p for p in real_profiles if p.decomposition_cost.recommended_direction in ("componentize", "unify")] + if flaggable: + lines.append("| Aggregate | Direction | Estimated savings (us/turn) | Top refactor step |") + lines.append("|---|---|---|---|") + for p in sorted(flaggable, key=lambda p: -(p.decomposition_cost.componentize_savings + p.decomposition_cost.unify_savings)): + dc = p.decomposition_cost + savings = dc.componentize_savings + dc.unify_savings + step = p.decomposition_cost.recommended_rationale + lines.append(f"| `{p.name}` | `{dc.recommended_direction}` | {savings} | {step} |") + else: + lines.append("_(no aggregates currently flagged for refactoring; most have 'hold' status)_") + lines.append("") + lines.append("## Aggregates needing runtime profiling") + lines.append("") + insufficient = [p for p in real_profiles if p.decomposition_cost.recommended_direction == "insufficient_data"] + if insufficient: + lines.append("| Aggregate | Reason |") + lines.append("|---|---|") + for p in insufficient: + lines.append(f"| `{p.name}` | {p.decomposition_cost.recommended_rationale} |") + else: + lines.append("_(none)_") + lines.append("") + return "\n".join(lines) + + +def render_summary_rich(profiles): + lines = ["# Code Path & Data Pipeline Audit Summary", ""] + lines.append("Generated for " + str(len(profiles)) + " aggregates on 2026-06-22") + lines.append("") + real_profiles = [p for p in profiles if not p.is_candidate] + candidate_profiles = [p for p in profiles if p.is_candidate] + lines.append("- **Real aggregates (in scope):** " + str(len(real_profiles))) + lines.append("- **Candidate aggregates (placeholders):** " + str(len(candidate_profiles))) + total_producers = sum(len(p.producers) for p in real_profiles) + total_consumers = sum(len(p.consumers) for p in real_profiles) + total_cost = sum(p.decomposition_cost.current_cost_estimate for p in real_profiles) + total_actionable = sum(p.decomposition_cost.componentize_savings + p.decomposition_cost.unify_savings for p in real_profiles) + lines.append("- **Total producers:** " + str(total_producers)) + lines.append("- **Total consumers:** " + str(total_consumers)) + lines.append("- **Total current cost (us/turn):** " + str(total_cost)) + lines.append("- **Total actionable savings (us/turn):** " + str(total_actionable)) + lines.append("") + lines.append("## 4-mem-dim rollup") + lines.append("") + by_dim = {} + for p in profiles: + by_dim.setdefault(p.memory_dim, []).append(p.name) + for dim, names in sorted(by_dim.items()): + lines.append("- **" + dim + "** (" + str(len(names)) + "): " + ", ".join(names)) + lines.append("") + lines.append("## Per-aggregate memory_dim + access pattern") + lines.append("") + lines.append("| Aggregate | Kind | Memory dim | Access pattern | Producers | Consumers |") + lines.append("|---|---|---|---|---|---|") + for p in sorted(real_profiles, key=lambda p: p.name): + lines.append(f"| `{p.name}` | `{p.aggregate_kind}` | `{p.memory_dim}` | `{p.access_pattern}` | {len(p.producers)} | {len(p.consumers)} |") + for p in sorted(candidate_profiles, key=lambda p: p.name): + lines.append(f"| `{p.name}` | `candidate_dataclass` | `{p.memory_dim}` | `{p.access_pattern}` | {len(p.producers)} | {len(p.consumers)} |") + lines.append("") + lines.append("## Cross-validation verdict") + lines.append("") + for p in sorted(real_profiles, key=lambda p: p.name): + rc = p.result_coverage + tac = p.type_alias_coverage + total_cf = ( + len(p.cross_audit_findings.weak_types) + + len(p.cross_audit_findings.exception_handling) + + len(p.cross_audit_findings.optional_in_baseline) + + len(p.cross_audit_findings.config_io_ownership) + + len(p.cross_audit_findings.import_graph) + ) + lines.append("### `" + p.name + "`") + lines.append("") + lines.append("- **Result coverage:** " + rc.summary) + lines.append("- **Type alias coverage:** " + tac.summary) + lines.append("- **Cross-audit findings (total sites):** " + str(total_cf)) + lines.append("") + return "\n".join(lines) + + +def render_candidates_rich(profiles): + lines = ["# Optimization Candidates", ""] + real_profiles = [p for p in profiles if not p.is_candidate] + all_candidates = [] + for p in real_profiles: + for c in p.optimization_candidates: + all_candidates.append((p, c)) + all_candidates.sort(key=lambda pc: -pc[1].estimated_savings_us) + lines.append("Total candidates: " + str(len(all_candidates))) + lines.append("") + if all_candidates: + lines.append("## Ranked by estimated savings") + lines.append("") + lines.append("| Rank | Aggregate | Direction | Savings (us/turn) | Effort | Priority | Affected files |") + lines.append("|---|---|---|---|---|---|---|") + for i, (p, c) in enumerate(all_candidates, 1): + lines.append(f"| {i} | `{p.name}` | `{c.direction}` | {c.estimated_savings_us} | `{c.effort}` | `{c.priority}` | {len(c.affected_files)} |") + lines.append("") + lines.append("## Detailed candidate steps") + lines.append("") + for p, c in all_candidates: + lines.append("### " + p.name + ": " + c.candidate) + lines.append("") + lines.append("- **Direction:** `" + c.direction + "`") + lines.append("- **Effort:** `" + c.effort + "`") + lines.append("- **Priority:** `" + c.priority + "`") + lines.append("- **Estimated savings:** " + str(c.estimated_savings_us) + " us/turn") + lines.append("- **Affected files:** " + ", ".join(c.affected_files[:10])) + if len(c.affected_files) > 10: + lines.append(" (+" + str(len(c.affected_files) - 10) + " more)") + lines.append("- **Reference:** " + c.cross_ref) + lines.append("") + else: + lines.append("_(no optimization candidates currently generated)_") + lines.append("") + lines.append("## Candidate placeholder aggregates") + lines.append("") + for p in [x for x in profiles if x.is_candidate]: + lines.append("- `" + p.name + "`: " + p.decomposition_cost.recommended_rationale) + lines.append("") + return "\n".join(lines) + + +def render_hot_path_rollup(profiles): + lines = ["# Hot Path Analysis", ""] + lines.append("Functions on the per-LLM-turn path (high-frequency consumers).") + lines.append("") + real_profiles = [p for p in profiles if not p.is_candidate] + lines.append("## Per-aggregate hot consumers (top 5 by field access count)") + lines.append("") + for p in real_profiles: + ev = p.access_pattern_evidence + if not ev: + continue + ranked = sorted(ev, key=lambda e: -sum(e.field_accesses.values()))[:5] + if not ranked: + continue + lines.append("### `" + p.name + "`") + lines.append("") + lines.append("| function | pattern | total field accesses |") + lines.append("|---|---|---|") + for e in ranked: + total = sum(e.field_accesses.values()) + lines.append(f"| `{e.function.fqname}` | `{e.pattern}` | {total} |") + lines.append("") + return "\n".join(lines) + + +def render_dead_field_rollup(profiles): + lines = ["# Dead Field Analysis", ""] + lines.append("Fields that appear in producer return shapes but are never read by any consumer.") + lines.append("") + real_profiles = [p for p in profiles if not p.is_candidate] + for p in real_profiles: + read_fields = set() + for ev in p.access_pattern_evidence: + read_fields.update(ev.field_accesses.keys()) + if not read_fields: + continue + lines.append("### `" + p.name + "`") + lines.append("") + lines.append("Fields read by at least one consumer: " + str(len(read_fields))) + lines.append("") + field_counts = {} + for ev in p.access_pattern_evidence: + for k, v in ev.field_accesses.items(): + field_counts[k] = field_counts.get(k, 0) + v + if len(field_counts) <= 30: + lines.append("| field | read count |") + lines.append("|---|---|") + for f in sorted(field_counts.keys()): + lines.append(f"| `{f}` | {field_counts[f]} |") + lines.append("") + return "\n".join(lines) \ No newline at end of file