From 5405345c5a9d2b5b8540023be9f0351728aa8881 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Mon, 22 Jun 2026 10:05:12 -0400 Subject: [PATCH] fix(audit): path resolution in analyze_consumer_fields + analyze_producer_size The previous code did Path(src_dir) / function_ref.file, which double-prefixed (e.g. src/src/project_manager.py) and silently returned empty. Fixed: if function_ref.file exists as CWD-relative, use it directly. Only join if it doesn't exist. Now 130 real field accesses detected across 35 Metadata consumers in the 2026-06-22 audit output (was 0 before). --- .../2026-06-22/aggregates/FileItems.dsl | 8 +- .../2026-06-22/aggregates/FileItems.tree | 4 +- .../2026-06-22/aggregates/HistoryMessage.dsl | 12 +- .../2026-06-22/aggregates/HistoryMessage.md | 12 +- .../2026-06-22/aggregates/HistoryMessage.tree | 8 +- .../2026-06-22/aggregates/Metadata.dsl | 288 +++++++++--------- .../2026-06-22/aggregates/Metadata.md | 10 +- .../2026-06-22/aggregates/Metadata.tree | 214 ++++++------- .../2026-06-22/aggregates/ToolCall.dsl | 4 +- .../2026-06-22/aggregates/ToolCall.md | 2 +- .../2026-06-22/aggregates/ToolCall.tree | 2 +- .../code_path_audit/2026-06-22/summary.md | 6 +- src/code_path_audit_analysis.py | 16 +- 13 files changed, 299 insertions(+), 287 deletions(-) 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 e78d82bf..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._reread_file_items_result" "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._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 \ === access_pattern === "whole_struct" access-pattern \ === access_pattern_evidence (3 items) === - "src.ai_client._reread_file_items_result" "whole_struct" 0 "low" ap-evidence - "src.ai_client._build_file_diff_text" "whole_struct" 0 "low" ap-evidence "src.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 \ === frequency === "per_turn" frequency 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 c61b2858..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._reread_file_items_result (consumer) -| |- src.ai_client._build_file_diff_text (consumer) | |- src.ai_client._build_file_context_text (consumer) +| |- src.ai_client._build_file_diff_text (consumer) +| |- src.ai_client._reread_file_items_result (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 8284472d..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 === - "whole_struct" access-pattern + "mixed" access-pattern \ === access_pattern_evidence (2 items) === - "src.provider_state.replace_all" "whole_struct" 0 "low" ap-evidence - "src.provider_state.append" "whole_struct" 0 "low" 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 @@ -29,13 +29,13 @@ 0 0 2 0 result-coverage \ === type_alias_coverage === - 0 0 0 type-alias-coverage + 4 0 4 type-alias-coverage \ === cross_audit_findings === 5 cross-audit-findings \ === decomposition_cost === - 470 0 70 "hold" "HistoryMessage: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 5 true decomp-cost + 470 0 0 "insufficient_data" "HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern." nil 5 true decomp-cost \ === optimization_candidates (0 items) === diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.md b/docs/reports/code_path_audit/2026-06-22/aggregates/HistoryMessage.md index 013e3fa3..5a0f532a 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 @@ -11,7 +11,7 @@ ## Access pattern -**Dominant pattern:** whole_struct +**Dominant pattern:** mixed **Evidence count:** 2 ## Frequency @@ -25,7 +25,7 @@ ## Type alias coverage -**Summary:** 0 sites +**Summary:** 4 sites; 0 typed (0%); 4 untyped (100%) ## Cross-audit findings @@ -36,9 +36,9 @@ **Current cost estimate:** 470 us **Componentize savings:** 0 us -**Unify savings:** 70 us -**Recommended direction:** hold -**Rationale:** HistoryMessage: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +**Unify savings:** 0 us +**Recommended direction:** insufficient_data +**Rationale:** HistoryMessage: access_pattern=mixed, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: insufficient_data because runtime profiling is needed to determine the dominant pattern. ## Optimization candidates @@ -46,4 +46,4 @@ _(none)_ ## Verdict -HistoryMessage: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. \ No newline at end of file +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. \ No newline at end of file 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 1b85b1bc..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,12 +3,12 @@ Metadata: HistoryMessage |- memory_dim: discussion |- producers: [0] |- consumers: [2] -| |- src.provider_state.replace_all (consumer) | |- src.provider_state.append (consumer) -|- access_pattern: whole_struct +| |- src.provider_state.replace_all (consumer) +|- access_pattern: mixed |- frequency: per_turn |- result_coverage: 0 producers, 2 consumers -|- type_alias_coverage: 0 sites +|- type_alias_coverage: 4 sites; 0 typed (0%); 4 untyped (100%) |- cross_audit_findings: 0 findings -|- decomposition_cost: hold (470 us) +|- decomposition_cost: insufficient_data (470 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.dsl index 7f5816a0..10e4dbaa 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,183 +8,183 @@ "discussion" mem-dim \ === producers (77 items) === - "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 0 "producer" fn-ref - "src.project_manager.str_to_entry" "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._api_get_gui_state" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller._offload_entry_payload" "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.app_controller.get_session" "src\app_controller.py" 0 "producer" fn-ref - "src.api_hook_client.push_event" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller._api_get_session" "src\app_controller.py" 0 "producer" fn-ref - "src.models.to_dict" "src\models.py" 0 "producer" fn-ref - "src.ai_client._content_block_to_dict" "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_system_telemetry" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_gui_health" "src\api_hook_client.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.api_hook_client.get_context_state" "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.ai_client.ollama_chat" "src\ai_client.py" 0 "producer" fn-ref - "src.api_hook_client.select_tab" "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.app_controller._api_get_mma_status" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.get_session_insights" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.get_performance" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.token_stats" "src\app_controller.py" 0 "producer" fn-ref - "src.models._load_config_from_disk" "src\models.py" 0 "producer" fn-ref - "src.api_hook_client.get_startup_timeline" "src\api_hook_client.py" 0 "producer" fn-ref - "src.project_manager.flat_config" "src\project_manager.py" 0 "producer" fn-ref - "src.ai_client._load_credentials" "src\ai_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_session" "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.get_io_pool_status" "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.app_controller.get_api_session" "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.project_manager.default_project" "src\project_manager.py" 0 "producer" fn-ref - "src.api_hook_client.get_project" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller._api_generate" "src\app_controller.py" 0 "producer" fn-ref - "src.ai_client._send_cli_round_result" "src\ai_client.py" 0 "producer" fn-ref - "src.app_controller.generate" "src\app_controller.py" 0 "producer" fn-ref - "src.api_hook_client.post_session" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.post_gui" "src\api_hook_client.py" 0 "producer" fn-ref - "src.project_manager.load_project" "src\project_manager.py" 0 "producer" fn-ref - "src.api_hook_client.drag" "src\api_hook_client.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_warmup_wait" "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.ai_client._parse_tool_args_result" "src\ai_client.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_gui_diagnostics" "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.app_controller.get_api_project" "src\app_controller.py" 0 "producer" fn-ref - "src.ai_client._dashscope_call" "src\ai_client.py" 0 "producer" fn-ref - "src.api_hook_client.get_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.app_controller._api_get_diagnostics" "src\app_controller.py" 0 "producer" fn-ref - "src.ai_client.get_token_stats" "src\ai_client.py" 0 "producer" fn-ref - "src.api_hook_client.apply_patch" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.post_project" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller.load_config" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.wait" "src\app_controller.py" 0 "producer" fn-ref - "src.api_hook_client.get_mma_workers" "src\api_hook_client.py" 0 "producer" fn-ref - "src.api_hook_client.click" "src\api_hook_client.py" 0 "producer" fn-ref - "src.app_controller._api_status" "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.api_hook_client.trigger_patch" "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.project_manager.load_history" "src\project_manager.py" 0 "producer" fn-ref - "src.app_controller._api_get_api_session" "src\app_controller.py" 0 "producer" fn-ref - "src.app_controller.status" "src\app_controller.py" 0 "producer" fn-ref - "src.ai_client.get_gemini_cache_stats" "src\ai_client.py" 0 "producer" fn-ref - "src.app_controller.get_mma_status" "src\app_controller.py" 0 "producer" fn-ref + "src.ai_client._send_cli_round_result" "src\ai_client.py" 0 "producer" fn-ref + "src.app_controller.get_session_insights" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller._api_get_api_project" "src\app_controller.py" 0 "producer" fn-ref + "src.project_manager.load_project" "src\project_manager.py" 0 "producer" fn-ref + "src.app_controller.token_stats" "src\app_controller.py" 0 "producer" fn-ref + "src.api_hook_client.select_tab" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller._api_status" "src\app_controller.py" 0 "producer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 0 "producer" fn-ref + "src.api_hook_client.get_status" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller._api_get_performance" "src\app_controller.py" 0 "producer" fn-ref + "src.api_hook_client.set_value" "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.get_gui_state" "src\app_controller.py" 0 "producer" fn-ref "src.app_controller._api_token_stats" "src\app_controller.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_context_state" "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.select_list_item" "src\api_hook_client.py" 0 "producer" fn-ref + "src.app_controller.wait" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller.get_mma_status" "src\app_controller.py" 0 "producer" fn-ref + "src.models.to_dict" "src\models.py" 0 "producer" fn-ref + "src.api_hook_client.get_gui_health" "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._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.app_controller.get_api_session" "src\app_controller.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_node_status" "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.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.ai_client._dashscope_call" "src\ai_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_startup_timeline" "src\api_hook_client.py" 0 "producer" fn-ref + "src.project_manager.default_discussion" "src\project_manager.py" 0 "producer" fn-ref + "src.api_hook_client.get_project_switch_status" "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.api_hook_client.apply_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.api_hook_client.right_click" "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.post_gui" "src\api_hook_client.py" 0 "producer" fn-ref + "src.api_hook_client.click" "src\api_hook_client.py" 0 "producer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 0 "producer" fn-ref + "src.app_controller.get_api_project" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller.get_diagnostics" "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_io_pool_status" "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.api_hook_client.get_warmup_wait" "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.ai_client.get_gemini_cache_stats" "src\ai_client.py" 0 "producer" fn-ref + "src.app_controller.get_session" "src\app_controller.py" 0 "producer" fn-ref + "src.ai_client._content_block_to_dict" "src\ai_client.py" 0 "producer" fn-ref + "src.app_controller.load_config" "src\app_controller.py" 0 "producer" fn-ref + "src.ai_client._load_credentials" "src\ai_client.py" 0 "producer" fn-ref + "src.api_hook_client.drag" "src\api_hook_client.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_diagnostics" "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.get_mma_status" "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.api_hook_client.get_system_telemetry" "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.get_gui_diagnostics" "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.app_controller.get_performance" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller.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.get_token_stats" "src\ai_client.py" 0 "producer" fn-ref + "src.app_controller.generate" "src\app_controller.py" 0 "producer" fn-ref + "src.project_manager.default_project" "src\project_manager.py" 0 "producer" fn-ref + "src.app_controller._api_get_session" "src\app_controller.py" 0 "producer" fn-ref + "src.app_controller._offload_entry_payload" "src\app_controller.py" 0 "producer" fn-ref + "src.api_hook_client.trigger_patch" "src\api_hook_client.py" 0 "producer" fn-ref + "src.project_manager.str_to_entry" "src\project_manager.py" 0 "producer" fn-ref \ === consumers (35 items) === - "src.ai_client._repair_anthropic_history" "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._add_history_cache_breakpoint" "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._estimate_prompt_tokens" "src\ai_client.py" 0 "consumer" fn-ref - "src.ai_client._strip_private_keys" "src\ai_client.py" 0 "consumer" fn-ref - "src.project_manager.flat_config" "src\project_manager.py" 0 "consumer" fn-ref - "src.ai_client._invalidate_token_estimate" "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._repair_deepseek_history" "src\ai_client.py" 0 "consumer" fn-ref - "src.ai_client._repair_minimax_history" "src\ai_client.py" 0 "consumer" fn-ref - "src.models._save_config_to_disk" "src\models.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._strip_stale_file_refreshes" "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.aggregate.run" "src\aggregate.py" 0 "consumer" fn-ref - "src.aggregate._build_files_section_from_items" "src\aggregate.py" 0 "consumer" fn-ref - "src.ai_client._add_bleed_derived" "src\ai_client.py" 0 "consumer" fn-ref - "src.aggregate.build_markdown_from_items" "src\aggregate.py" 0 "consumer" fn-ref - "src.app_controller._refresh_api_metrics" "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._start_track_logic_result" "src\app_controller.py" 0 "consumer" fn-ref - "src.aggregate.build_tier3_context" "src\aggregate.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.project_manager.save_project" "src\project_manager.py" 0 "consumer" fn-ref - "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 0 "consumer" fn-ref - "src.ai_client._trim_anthropic_history" "src\ai_client.py" 0 "consumer" fn-ref "src.app_controller._offload_entry_payload" "src\app_controller.py" 0 "consumer" fn-ref "src.aggregate.build_markdown_no_history" "src\aggregate.py" 0 "consumer" fn-ref - "src.ai_client.ollama_chat" "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._strip_stale_file_refreshes" "src\ai_client.py" 0 "consumer" fn-ref "src.project_manager.format_discussion" "src\project_manager.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.ai_client._trim_minimax_history" "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.ollama_chat" "src\ai_client.py" 0 "consumer" fn-ref + "src.project_manager.flat_config" "src\project_manager.py" 0 "consumer" fn-ref + "src.app_controller._on_comms_entry" "src\app_controller.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.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.ai_client._dashscope_call" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._repair_deepseek_history" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._add_bleed_derived" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._add_history_cache_breakpoint" "src\ai_client.py" 0 "consumer" fn-ref + "src.project_manager.migrate_from_legacy_config" "src\project_manager.py" 0 "consumer" fn-ref + "src.ai_client._invalidate_token_estimate" "src\ai_client.py" 0 "consumer" fn-ref + "src.project_manager.entry_to_str" "src\project_manager.py" 0 "consumer" fn-ref + "src.ai_client._strip_cache_controls" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._repair_minimax_history" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._append_comms" "src\ai_client.py" 0 "consumer" fn-ref + "src.aggregate.build_tier3_context" "src\aggregate.py" 0 "consumer" fn-ref + "src.aggregate.build_markdown_from_items" "src\aggregate.py" 0 "consumer" fn-ref + "src.ai_client._pre_dispatch" "src\ai_client.py" 0 "consumer" fn-ref + "src.aggregate.run" "src\aggregate.py" 0 "consumer" fn-ref + "src.models._save_config_to_disk" "src\models.py" 0 "consumer" fn-ref + "src.ai_client._repair_anthropic_history" "src\ai_client.py" 0 "consumer" fn-ref + "src.ai_client._estimate_message_tokens" "src\ai_client.py" 0 "consumer" fn-ref + "src.app_controller._refresh_api_metrics" "src\app_controller.py" 0 "consumer" fn-ref + "src.ai_client._execute_single_tool_call_async" "src\ai_client.py" 0 "consumer" fn-ref \ === access_pattern === "whole_struct" access-pattern \ === access_pattern_evidence (35 items) === - "src.ai_client._repair_anthropic_history" "whole_struct" 0 "low" ap-evidence - "src.app_controller._on_comms_entry" "whole_struct" 0 "low" ap-evidence - "src.ai_client._add_history_cache_breakpoint" "whole_struct" 0 "low" ap-evidence - "src.ai_client._estimate_message_tokens" "whole_struct" 0 "low" ap-evidence - "src.ai_client._estimate_prompt_tokens" "whole_struct" 0 "low" ap-evidence - "src.ai_client._strip_private_keys" "whole_struct" 0 "low" ap-evidence - "src.project_manager.flat_config" "whole_struct" 0 "low" ap-evidence - "src.ai_client._invalidate_token_estimate" "whole_struct" 0 "low" ap-evidence - "src.ai_client._strip_cache_controls" "whole_struct" 0 "low" ap-evidence - "src.ai_client._repair_deepseek_history" "whole_struct" 0 "low" ap-evidence - "src.ai_client._repair_minimax_history" "whole_struct" 0 "low" ap-evidence - "src.models._save_config_to_disk" "whole_struct" 0 "low" ap-evidence - "src.ai_client._dashscope_call" "whole_struct" 0 "low" ap-evidence - "src.models.from_dict" "whole_struct" 0 "low" ap-evidence - "src.ai_client._strip_stale_file_refreshes" "whole_struct" 0 "low" ap-evidence - "src.ai_client._execute_single_tool_call_async" "whole_struct" 0 "low" ap-evidence - "src.aggregate.run" "whole_struct" 0 "low" ap-evidence - "src.aggregate._build_files_section_from_items" "whole_struct" 0 "low" ap-evidence - "src.ai_client._add_bleed_derived" "whole_struct" 0 "low" ap-evidence - "src.aggregate.build_markdown_from_items" "whole_struct" 0 "low" ap-evidence - "src.app_controller._refresh_api_metrics" "whole_struct" 0 "low" ap-evidence - "src.project_manager.entry_to_str" "whole_struct" 0 "low" ap-evidence - "src.app_controller._start_track_logic_result" "whole_struct" 0 "low" ap-evidence - "src.aggregate.build_tier3_context" "whole_struct" 0 "low" ap-evidence - "src.ai_client._trim_minimax_history" "whole_struct" 0 "low" ap-evidence - "src.ai_client._append_comms" "whole_struct" 0 "low" ap-evidence - "src.project_manager.save_project" "whole_struct" 0 "low" ap-evidence - "src.project_manager.migrate_from_legacy_config" "whole_struct" 0 "low" ap-evidence - "src.ai_client._trim_anthropic_history" "whole_struct" 0 "low" ap-evidence "src.app_controller._offload_entry_payload" "whole_struct" 0 "low" ap-evidence "src.aggregate.build_markdown_no_history" "whole_struct" 0 "low" ap-evidence - "src.ai_client.ollama_chat" "whole_struct" 0 "low" ap-evidence - "src.ai_client._pre_dispatch" "whole_struct" 0 "low" ap-evidence - "src.app_controller._start_track_logic" "whole_struct" 0 "low" ap-evidence + "src.app_controller._start_track_logic" "mixed" 2 "high" ap-evidence + "src.ai_client._strip_stale_file_refreshes" "whole_struct" 0 "low" ap-evidence "src.project_manager.format_discussion" "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.ai_client._trim_minimax_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._estimate_prompt_tokens" "whole_struct" 0 "low" ap-evidence + "src.ai_client.ollama_chat" "whole_struct" 0 "low" ap-evidence + "src.project_manager.flat_config" "whole_struct" 1 "high" ap-evidence + "src.app_controller._on_comms_entry" "field_by_field" 10 "high" ap-evidence + "src.models.from_dict" "mixed" 2 "high" ap-evidence + "src.app_controller._start_track_logic_result" "field_by_field" 17 "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.ai_client._dashscope_call" "whole_struct" 0 "low" ap-evidence + "src.ai_client._repair_deepseek_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._add_bleed_derived" "field_by_field" 9 "high" ap-evidence + "src.ai_client._add_history_cache_breakpoint" "whole_struct" 0 "low" ap-evidence + "src.project_manager.migrate_from_legacy_config" "whole_struct" 1 "high" ap-evidence + "src.ai_client._invalidate_token_estimate" "whole_struct" 1 "high" ap-evidence + "src.project_manager.entry_to_str" "whole_struct" 1 "high" ap-evidence + "src.ai_client._strip_cache_controls" "whole_struct" 0 "low" ap-evidence + "src.ai_client._repair_minimax_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._append_comms" "whole_struct" 0 "low" ap-evidence + "src.aggregate.build_tier3_context" "whole_struct" 0 "low" ap-evidence + "src.aggregate.build_markdown_from_items" "whole_struct" 0 "low" ap-evidence + "src.ai_client._pre_dispatch" "whole_struct" 0 "low" ap-evidence + "src.aggregate.run" "field_by_field" 3 "high" ap-evidence + "src.models._save_config_to_disk" "whole_struct" 0 "low" ap-evidence + "src.ai_client._repair_anthropic_history" "whole_struct" 1 "high" ap-evidence + "src.ai_client._estimate_message_tokens" "mixed" 2 "high" ap-evidence + "src.app_controller._refresh_api_metrics" "field_by_field" 11 "high" ap-evidence + "src.ai_client._execute_single_tool_call_async" "mixed" 2 "high" ap-evidence \ === frequency === "per_turn" frequency \ === frequency_evidence (5 items) === - "src.project_manager.migrate_from_legacy_config" "per_turn" "static_analysis" "producer from src\project_manager.py" freq-evidence - "src.project_manager.str_to_entry" "per_turn" "static_analysis" "producer from src\project_manager.py" freq-evidence - "src.api_hook_client.get_node_status" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence - "src.app_controller._api_get_gui_state" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence - "src.app_controller._offload_entry_payload" "per_turn" "static_analysis" "producer from src\app_controller.py" freq-evidence + "src.api_hook_client.wait_for_project_switch" "per_turn" "static_analysis" "producer from src\api_hook_client.py" freq-evidence + "src.ai_client._send_cli_round_result" "per_turn" "static_analysis" "producer from src\ai_client.py" freq-evidence + "src.app_controller.get_session_insights" "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.project_manager.load_project" "per_turn" "static_analysis" "producer from src\project_manager.py" freq-evidence \ === result_coverage === 77 77 35 0 result-coverage \ === type_alias_coverage === - 0 0 0 type-alias-coverage + 130 0 130 type-alias-coverage \ === cross_audit_findings === "audit_optional_in_3_files" 76 "src\ai_client.py" 159 "76 sites" cross-audit-finding 5 cross-audit-findings \ === decomposition_cost === - 470 0 70 "hold" "Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 5 true decomp-cost + 720 0 0 "hold" "Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10, struct_frozen=True. Recommended: hold because the current shape matches the access pattern." nil 10 true decomp-cost \ === optimization_candidates (0 items) === diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.md b/docs/reports/code_path_audit/2026-06-22/aggregates/Metadata.md index 24cb7ae1..9037896b 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 @@ -25,7 +25,7 @@ ## Type alias coverage -**Summary:** 0 sites +**Summary:** 130 sites; 0 typed (0%); 130 untyped (100%) ## Cross-audit findings @@ -35,11 +35,11 @@ ## Decomposition cost -**Current cost estimate:** 470 us +**Current cost estimate:** 720 us **Componentize savings:** 0 us -**Unify savings:** 70 us +**Unify savings:** 0 us **Recommended direction:** hold -**Rationale:** Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. +**Rationale:** Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. ## Optimization candidates @@ -47,4 +47,4 @@ _(none)_ ## Verdict -Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=5, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. \ No newline at end of file +Metadata: access_pattern=whole_struct, frequency=per_turn, struct_field_count=10, struct_frozen=True. Recommended: hold because the current shape matches the access pattern. \ No newline at end of file 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 8c6f1d7a..9477b7e9 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,123 +2,123 @@ Metadata: Metadata |- kind: typealias |- memory_dim: discussion |- producers: [77] -| |- src.project_manager.migrate_from_legacy_config (producer) -| |- src.project_manager.str_to_entry (producer) -| |- src.api_hook_client.get_node_status (producer) -| |- src.app_controller._api_get_gui_state (producer) -| |- src.app_controller._offload_entry_payload (producer) -| |- src.app_controller.get_gui_state (producer) -| |- src.app_controller._api_get_performance (producer) -| |- src.app_controller.get_session (producer) -| |- src.api_hook_client.push_event (producer) -| |- src.app_controller._api_get_session (producer) -| |- src.models.to_dict (producer) -| |- src.ai_client._content_block_to_dict (producer) -| |- src.api_hook_client.get_warmup_status (producer) -| |- src.ai_client._add_bleed_derived (producer) -| |- src.api_hook_client.get_system_telemetry (producer) -| |- src.api_hook_client.get_gui_health (producer) -| |- src.app_controller.get_context (producer) -| |- src.api_hook_client.right_click (producer) -| |- src.api_hook_client.get_context_state (producer) -| |- src.api_hook_client.get_patch_status (producer) -| |- src.ai_client.ollama_chat (producer) -| |- src.api_hook_client.select_tab (producer) -| |- src.api_hook_client.select_list_item (producer) -| |- src.app_controller._api_get_mma_status (producer) -| |- src.app_controller.get_session_insights (producer) -| |- src.app_controller.get_performance (producer) -| |- src.app_controller.token_stats (producer) -| |- src.models._load_config_from_disk (producer) -| |- src.api_hook_client.get_startup_timeline (producer) -| |- src.project_manager.flat_config (producer) -| |- src.ai_client._load_credentials (producer) -| |- src.api_hook_client.get_session (producer) -| |- src.api_hook_client.get_gui_state (producer) -| |- src.api_hook_client.get_io_pool_status (producer) -| |- src.app_controller.get_diagnostics (producer) -| |- src.project_manager.default_discussion (producer) -| |- src.app_controller.get_api_session (producer) -| |- src.api_hook_client.get_project_switch_status (producer) -| |- src.project_manager.default_project (producer) -| |- src.api_hook_client.get_project (producer) -| |- src.app_controller._api_generate (producer) -| |- src.ai_client._send_cli_round_result (producer) -| |- src.app_controller.generate (producer) -| |- src.api_hook_client.post_session (producer) -| |- src.api_hook_client.post_gui (producer) -| |- src.project_manager.load_project (producer) -| |- src.api_hook_client.drag (producer) -| |- src.api_hook_client.get_financial_metrics (producer) -| |- src.api_hook_client.get_warmup_wait (producer) -| |- src.api_hook_client.reject_patch (producer) -| |- src.ai_client._parse_tool_args_result (producer) -| |- src.app_controller._api_get_api_project (producer) -| |- src.api_hook_client.get_gui_diagnostics (producer) -| |- src.api_hook_client.set_value (producer) -| |- src.app_controller.get_api_project (producer) -| |- src.ai_client._dashscope_call (producer) -| |- src.api_hook_client.get_status (producer) -| |- src.app_controller._api_get_context (producer) -| |- src.app_controller._api_get_diagnostics (producer) -| |- src.ai_client.get_token_stats (producer) -| |- src.api_hook_client.apply_patch (producer) -| |- src.api_hook_client.post_project (producer) -| |- src.app_controller.load_config (producer) -| |- src.app_controller.wait (producer) -| |- src.api_hook_client.get_mma_workers (producer) -| |- src.api_hook_client.click (producer) -| |- src.app_controller._api_status (producer) | |- src.api_hook_client.wait_for_project_switch (producer) -| |- src.api_hook_client.trigger_patch (producer) -| |- src.api_hook_client.get_performance (producer) -| |- src.project_manager.load_history (producer) -| |- src.app_controller._api_get_api_session (producer) -| |- src.app_controller.status (producer) -| |- src.ai_client.get_gemini_cache_stats (producer) -| |- src.app_controller.get_mma_status (producer) +| |- src.ai_client._send_cli_round_result (producer) +| |- src.app_controller.get_session_insights (producer) +| |- src.app_controller._api_get_api_project (producer) +| |- src.project_manager.load_project (producer) +| |- src.app_controller.token_stats (producer) +| |- src.api_hook_client.select_tab (producer) +| |- src.app_controller._api_status (producer) +| |- src.project_manager.migrate_from_legacy_config (producer) +| |- src.api_hook_client.get_status (producer) +| |- src.app_controller._api_get_performance (producer) +| |- src.api_hook_client.set_value (producer) +| |- src.app_controller._api_get_gui_state (producer) +| |- src.app_controller.get_gui_state (producer) | |- src.app_controller._api_token_stats (producer) +| |- src.api_hook_client.get_warmup_status (producer) +| |- src.api_hook_client.get_context_state (producer) +| |- src.api_hook_client.get_gui_state (producer) +| |- src.api_hook_client.select_list_item (producer) +| |- src.app_controller.wait (producer) +| |- src.app_controller.get_mma_status (producer) +| |- src.models.to_dict (producer) +| |- src.api_hook_client.get_gui_health (producer) +| |- src.api_hook_client.get_performance (producer) +| |- src.app_controller._api_get_context (producer) +| |- src.app_controller.get_context (producer) +| |- src.app_controller.get_api_session (producer) +| |- src.api_hook_client.post_session (producer) +| |- src.api_hook_client.get_node_status (producer) +| |- src.models._load_config_from_disk (producer) +| |- src.api_hook_client.reject_patch (producer) +| |- src.app_controller._api_generate (producer) +| |- src.ai_client._dashscope_call (producer) +| |- src.ai_client._add_bleed_derived (producer) +| |- src.api_hook_client.get_startup_timeline (producer) +| |- src.project_manager.default_discussion (producer) +| |- src.api_hook_client.get_project_switch_status (producer) +| |- src.api_hook_client.get_patch_status (producer) +| |- src.api_hook_client.apply_patch (producer) +| |- src.api_hook_client.get_project (producer) +| |- src.api_hook_client.right_click (producer) +| |- src.api_hook_client.push_event (producer) +| |- src.api_hook_client.post_gui (producer) +| |- src.api_hook_client.click (producer) +| |- src.project_manager.flat_config (producer) +| |- src.app_controller.get_api_project (producer) +| |- src.app_controller.get_diagnostics (producer) +| |- src.api_hook_client.get_financial_metrics (producer) +| |- src.api_hook_client.get_io_pool_status (producer) +| |- src.app_controller._api_get_api_session (producer) +| |- src.api_hook_client.get_warmup_wait (producer) +| |- src.ai_client._parse_tool_args_result (producer) +| |- src.ai_client.get_gemini_cache_stats (producer) +| |- src.app_controller.get_session (producer) +| |- src.ai_client._content_block_to_dict (producer) +| |- src.app_controller.load_config (producer) +| |- src.ai_client._load_credentials (producer) +| |- src.api_hook_client.drag (producer) +| |- src.api_hook_client.post_project (producer) +| |- src.app_controller._api_get_diagnostics (producer) +| |- src.ai_client.ollama_chat (producer) | |- src.api_hook_client.get_mma_status (producer) +| |- src.api_hook_client.get_mma_workers (producer) +| |- src.api_hook_client.get_system_telemetry (producer) +| |- src.project_manager.load_history (producer) +| |- src.api_hook_client.get_gui_diagnostics (producer) +| |- src.api_hook_client.get_session (producer) +| |- src.app_controller.get_performance (producer) +| |- src.app_controller.status (producer) +| |- src.app_controller._api_get_mma_status (producer) +| |- src.ai_client.get_token_stats (producer) +| |- src.app_controller.generate (producer) +| |- src.project_manager.default_project (producer) +| |- src.app_controller._api_get_session (producer) +| |- src.app_controller._offload_entry_payload (producer) +| |- src.api_hook_client.trigger_patch (producer) +| |- src.project_manager.str_to_entry (producer) |- consumers: [35] -| |- src.ai_client._repair_anthropic_history (consumer) -| |- src.app_controller._on_comms_entry (consumer) -| |- src.ai_client._add_history_cache_breakpoint (consumer) -| |- src.ai_client._estimate_message_tokens (consumer) -| |- src.ai_client._estimate_prompt_tokens (consumer) -| |- src.ai_client._strip_private_keys (consumer) -| |- src.project_manager.flat_config (consumer) -| |- src.ai_client._invalidate_token_estimate (consumer) -| |- src.ai_client._strip_cache_controls (consumer) -| |- src.ai_client._repair_deepseek_history (consumer) -| |- src.ai_client._repair_minimax_history (consumer) -| |- src.models._save_config_to_disk (consumer) -| |- src.ai_client._dashscope_call (consumer) -| |- src.models.from_dict (consumer) -| |- src.ai_client._strip_stale_file_refreshes (consumer) -| |- src.ai_client._execute_single_tool_call_async (consumer) -| |- src.aggregate.run (consumer) -| |- src.aggregate._build_files_section_from_items (consumer) -| |- src.ai_client._add_bleed_derived (consumer) -| |- src.aggregate.build_markdown_from_items (consumer) -| |- src.app_controller._refresh_api_metrics (consumer) -| |- src.project_manager.entry_to_str (consumer) -| |- src.app_controller._start_track_logic_result (consumer) -| |- src.aggregate.build_tier3_context (consumer) -| |- src.ai_client._trim_minimax_history (consumer) -| |- src.ai_client._append_comms (consumer) -| |- src.project_manager.save_project (consumer) -| |- src.project_manager.migrate_from_legacy_config (consumer) -| |- src.ai_client._trim_anthropic_history (consumer) | |- src.app_controller._offload_entry_payload (consumer) | |- src.aggregate.build_markdown_no_history (consumer) -| |- src.ai_client.ollama_chat (consumer) -| |- src.ai_client._pre_dispatch (consumer) | |- src.app_controller._start_track_logic (consumer) +| |- src.ai_client._strip_stale_file_refreshes (consumer) | |- src.project_manager.format_discussion (consumer) +| |- src.ai_client._trim_anthropic_history (consumer) +| |- src.project_manager.save_project (consumer) +| |- src.ai_client._trim_minimax_history (consumer) +| |- src.ai_client._estimate_prompt_tokens (consumer) +| |- src.ai_client.ollama_chat (consumer) +| |- src.project_manager.flat_config (consumer) +| |- src.app_controller._on_comms_entry (consumer) +| |- src.models.from_dict (consumer) +| |- src.app_controller._start_track_logic_result (consumer) +| |- src.ai_client._strip_private_keys (consumer) +| |- src.aggregate._build_files_section_from_items (consumer) +| |- src.ai_client._dashscope_call (consumer) +| |- src.ai_client._repair_deepseek_history (consumer) +| |- src.ai_client._add_bleed_derived (consumer) +| |- src.ai_client._add_history_cache_breakpoint (consumer) +| |- src.project_manager.migrate_from_legacy_config (consumer) +| |- src.ai_client._invalidate_token_estimate (consumer) +| |- src.project_manager.entry_to_str (consumer) +| |- src.ai_client._strip_cache_controls (consumer) +| |- src.ai_client._repair_minimax_history (consumer) +| |- src.ai_client._append_comms (consumer) +| |- src.aggregate.build_tier3_context (consumer) +| |- src.aggregate.build_markdown_from_items (consumer) +| |- src.ai_client._pre_dispatch (consumer) +| |- src.aggregate.run (consumer) +| |- src.models._save_config_to_disk (consumer) +| |- src.ai_client._repair_anthropic_history (consumer) +| |- src.ai_client._estimate_message_tokens (consumer) +| |- src.app_controller._refresh_api_metrics (consumer) +| |- src.ai_client._execute_single_tool_call_async (consumer) |- access_pattern: whole_struct |- frequency: per_turn |- result_coverage: 77 producers, 35 consumers -|- type_alias_coverage: 0 sites +|- type_alias_coverage: 130 sites; 0 typed (0%); 130 untyped (100%) |- cross_audit_findings: 1 findings -|- decomposition_cost: hold (470 us) +|- decomposition_cost: hold (720 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.dsl b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.dsl index 62acac0b..b2d60350 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.dsl +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.dsl @@ -17,7 +17,7 @@ "whole_struct" access-pattern \ === access_pattern_evidence (1 items) === - "src.openai_compatible._to_dict_tool_call" "whole_struct" 0 "low" ap-evidence + "src.openai_compatible._to_dict_tool_call" "whole_struct" 1 "high" ap-evidence \ === frequency === "per_turn" frequency @@ -29,7 +29,7 @@ 1 1 1 0 result-coverage \ === type_alias_coverage === - 0 0 0 type-alias-coverage + 1 0 1 type-alias-coverage \ === cross_audit_findings === 5 cross-audit-findings diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.md b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.md index 1c926032..fb325ec9 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.md +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.md @@ -25,7 +25,7 @@ ## Type alias coverage -**Summary:** 0 sites +**Summary:** 1 sites; 0 typed (0%); 1 untyped (100%) ## Cross-audit findings diff --git a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.tree b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.tree index 2273ad43..c569c7a4 100644 --- a/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.tree +++ b/docs/reports/code_path_audit/2026-06-22/aggregates/ToolCall.tree @@ -8,7 +8,7 @@ Metadata: ToolCall |- access_pattern: whole_struct |- frequency: per_turn |- result_coverage: 1 producers, 1 consumers -|- type_alias_coverage: 0 sites +|- type_alias_coverage: 1 sites; 0 typed (0%); 1 untyped (100%) |- cross_audit_findings: 0 findings |- decomposition_cost: hold (470 us) |- optimization_candidates: [0] \ No newline at end of file diff --git a/docs/reports/code_path_audit/2026-06-22/summary.md b/docs/reports/code_path_audit/2026-06-22/summary.md index a2bf51aa..58891f94 100644 --- a/docs/reports/code_path_audit/2026-06-22/summary.md +++ b/docs/reports/code_path_audit/2026-06-22/summary.md @@ -11,15 +11,15 @@ Generated for 13 aggregates ## Cross-validation verdict -- **Metadata**: result_coverage=77 producers, 35 consumers; type_alias_coverage=0 sites +- **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=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=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= diff --git a/src/code_path_audit_analysis.py b/src/code_path_audit_analysis.py index 49f6e3a1..8d0280be 100644 --- a/src/code_path_audit_analysis.py +++ b/src/code_path_audit_analysis.py @@ -80,7 +80,13 @@ def analyze_consumer_fields( """ type_registry = type_registry or {} canonical_fields = _field_names_for_aggregate(aggregate, type_registry) - filepath = Path(src_dir) / function_ref.file + _p = Path(function_ref.file) + if _p.exists(): + filepath = _p + elif _p.is_absolute(): + filepath = _p + else: + filepath = Path(src_dir) / function_ref.file if not filepath.exists(): return Counter(), [], False try: @@ -107,7 +113,13 @@ def analyze_producer_size( Returns (field_count, field_names). """ - filepath = Path(src_dir) / function_ref.file + _p2 = Path(function_ref.file) + if _p2.exists(): + filepath = _p2 + elif _p2.is_absolute(): + filepath = _p2 + else: + filepath = Path(src_dir) / function_ref.file if not filepath.exists(): return 0, [] try: