docs(reports): Phase 12.4+12.5 - re-run audit; triage findings
Phase 12.4: re-run audit_exception_handling.py with Heuristic #19 removed and Heuristic D added. Total sites: 403. - INTERNAL_BROAD_CATCH: 134 - INTERNAL_SILENT_SWALLOW: 46 (was logged as INTERNAL_COMPLIANT under #19) - INTERNAL_RETHROW: 30 - INTERNAL_PROGRAMMER_RAISE: 29 - INTERNAL_COMPLIANT: 93 - UNCLEAR: 20 - BOUNDARY_SDK: 19 - BOUNDARY_FASTAPI: 15 - BOUNDARY_CONVERSION: 12 - INTERNAL_OPTIONAL_RETURN: 5 Phase 12.5: triage per file. Generated docs/reports/PHASE12_TRIAGE_20260617.md. Top files by violations: - src/mcp_client.py: 46 (sub-track 3 scope, NOT sub-track 2) - src/app_controller.py: 45 (sub-track 3 scope) - src/gui_2.py: 42 (sub-track 4 scope) - src/ai_client.py: 33 (baseline; not migration target) - src/api_hooks.py: 16 (sub-track 2; 12.6.1) - src/rag_engine.py: 9 (baseline; not migration target) - src/multi_agent_conductor.py: 4 (sub-track 2; 12.6.9) - src/aggregate.py: 4 (sub-track 2; small file) - src/shell_runner.py: 3 (sub-track 2; 12.6.11) - src/warmup.py: 2 (verify Phase 11; 12.6.2) - src/project_manager.py: 2 (verify Phase 11; 12.6.6) - src/session_logger.py: 2 (sub-track 2; 12.6.12) - src/models.py: 2 (sub-track 2; 12.6.8) - src/orchestrator_pm.py: 1 (verify Phase 11; 12.6.5) The 16 api_hooks.py sites are HTTP handler sub-functions where the except body swallows exceptions and returns an empty fallback payload. The actual HTTP response (self.send_response(200)) happens AFTER the try/except, not inside the except body. Heuristic D.1 doesn't match because the send_response is outside the except block. These sites need full Result[T] migration: controller methods return Result[dict], except body converts exception to ErrorInfo, HTTP handler checks result.ok and returns 4xx/5xx on failure. L451/L824/L914 are different — they call self.send_response(500) INSIDE the except body (drain point pattern). 13 other sites are silent fallbacks.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,421 @@
|
||||
# Phase 12.5 — Triage of Post-Fix Audit Findings
|
||||
**Date:** 2026-06-17 (auto-generated)
|
||||
**Source:** `docs/reports/PHASE12_AUDIT_POST_FIX_20260617.json`
|
||||
**Total sites:** 403
|
||||
**Violation sites:** 185
|
||||
**UNCLEAR sites:** 20
|
||||
|
||||
This triage enumerates the migration-target sites per file, in priority order (Phase 12 plan 12.6 sub-batches).
|
||||
|
||||
## `src/api_hooks.py` — NO violations (clean)
|
||||
|
||||
## `src/warmup.py` — NO violations (clean)
|
||||
|
||||
## `src/startup_profiler.py` — NO violations (clean)
|
||||
|
||||
## `src/file_cache.py` — NO violations (clean)
|
||||
|
||||
## `src/orchestrator_pm.py` — NO violations (clean)
|
||||
|
||||
## `src/project_manager.py` — NO violations (clean)
|
||||
|
||||
## `src/log_registry.py` — NO violations (clean)
|
||||
|
||||
## `src/models.py` — NO violations (clean)
|
||||
|
||||
## `src/multi_agent_conductor.py` — NO violations (clean)
|
||||
|
||||
## `src/theme_2.py` — NO violations (clean)
|
||||
|
||||
## `src/shell_runner.py` — NO violations (clean)
|
||||
|
||||
## `src/session_logger.py` — NO violations (clean)
|
||||
|
||||
|
||||
## Other files with violations (not in priority list)
|
||||
|
||||
### `src\aggregate.py` — 4 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 52 | UNCLEAR | |
|
||||
| 270 | INTERNAL_BROAD_CATCH | |
|
||||
| 277 | UNCLEAR | |
|
||||
| 449 | UNCLEAR | |
|
||||
|
||||
### `src\ai_client.py` — 33 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 277 | INTERNAL_RETHROW | |
|
||||
| 302 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 314 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 332 | INTERNAL_BROAD_CATCH | |
|
||||
| 355 | INTERNAL_BROAD_CATCH | |
|
||||
| 394 | INTERNAL_BROAD_CATCH | |
|
||||
| 414 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 432 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 520 | INTERNAL_BROAD_CATCH | |
|
||||
| 537 | INTERNAL_BROAD_CATCH | |
|
||||
| 716 | INTERNAL_BROAD_CATCH | |
|
||||
| 723 | INTERNAL_BROAD_CATCH | |
|
||||
| 801 | INTERNAL_RETHROW | |
|
||||
| 802 | INTERNAL_RETHROW | |
|
||||
| 994 | INTERNAL_BROAD_CATCH | |
|
||||
| 1234 | INTERNAL_RETHROW | |
|
||||
| 1528 | INTERNAL_BROAD_CATCH | |
|
||||
| 1529 | INTERNAL_RETHROW | |
|
||||
| 1555 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 1599 | INTERNAL_BROAD_CATCH | |
|
||||
| 1611 | INTERNAL_BROAD_CATCH | |
|
||||
| 1636 | INTERNAL_BROAD_CATCH | |
|
||||
| 1657 | INTERNAL_BROAD_CATCH | |
|
||||
| 1854 | INTERNAL_BROAD_CATCH | |
|
||||
| 1856 | INTERNAL_RETHROW | |
|
||||
| 2242 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 2520 | INTERNAL_RETHROW | |
|
||||
| 2848 | INTERNAL_BROAD_CATCH | |
|
||||
| 2867 | INTERNAL_BROAD_CATCH | |
|
||||
| 2898 | INTERNAL_BROAD_CATCH | |
|
||||
| 2914 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 2922 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 3082 | INTERNAL_SILENT_SWALLOW | |
|
||||
|
||||
### `src\api_hooks.py` — 16 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 294 | INTERNAL_BROAD_CATCH | |
|
||||
| 387 | INTERNAL_BROAD_CATCH | |
|
||||
| 404 | UNCLEAR | |
|
||||
| 410 | INTERNAL_BROAD_CATCH | |
|
||||
| 428 | INTERNAL_BROAD_CATCH | |
|
||||
| 442 | INTERNAL_BROAD_CATCH | |
|
||||
| 561 | INTERNAL_BROAD_CATCH | |
|
||||
| 592 | INTERNAL_BROAD_CATCH | |
|
||||
| 620 | INTERNAL_BROAD_CATCH | |
|
||||
| 719 | INTERNAL_BROAD_CATCH | |
|
||||
| 739 | INTERNAL_BROAD_CATCH | |
|
||||
| 793 | INTERNAL_BROAD_CATCH | |
|
||||
| 810 | INTERNAL_BROAD_CATCH | |
|
||||
| 914 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 936 | INTERNAL_RETHROW | |
|
||||
| 939 | INTERNAL_RETHROW | |
|
||||
|
||||
### `src\app_controller.py` — 45 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 537 | INTERNAL_BROAD_CATCH | |
|
||||
| 579 | INTERNAL_BROAD_CATCH | |
|
||||
| 751 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 756 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 1224 | INTERNAL_RETHROW | |
|
||||
| 1250 | INTERNAL_RETHROW | |
|
||||
| 1293 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 1357 | INTERNAL_OPTIONAL_RETURN | |
|
||||
| 1375 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 1419 | INTERNAL_BROAD_CATCH | |
|
||||
| 1479 | INTERNAL_BROAD_CATCH | |
|
||||
| 1565 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 1668 | INTERNAL_BROAD_CATCH | |
|
||||
| 1946 | INTERNAL_BROAD_CATCH | |
|
||||
| 2045 | INTERNAL_BROAD_CATCH | |
|
||||
| 2067 | INTERNAL_BROAD_CATCH | |
|
||||
| 2080 | INTERNAL_BROAD_CATCH | |
|
||||
| 2128 | INTERNAL_BROAD_CATCH | |
|
||||
| 2139 | INTERNAL_BROAD_CATCH | |
|
||||
| 2153 | INTERNAL_BROAD_CATCH | |
|
||||
| 2194 | INTERNAL_BROAD_CATCH | |
|
||||
| 2388 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 2766 | INTERNAL_BROAD_CATCH | |
|
||||
| 2778 | INTERNAL_BROAD_CATCH | |
|
||||
| 2889 | INTERNAL_BROAD_CATCH | |
|
||||
| 2943 | INTERNAL_BROAD_CATCH | |
|
||||
| 2982 | INTERNAL_RETHROW | |
|
||||
| 2985 | INTERNAL_RETHROW | |
|
||||
| 3056 | INTERNAL_BROAD_CATCH | |
|
||||
| 3083 | INTERNAL_BROAD_CATCH | |
|
||||
| 3093 | INTERNAL_BROAD_CATCH | |
|
||||
| 3433 | INTERNAL_BROAD_CATCH | |
|
||||
| 3470 | INTERNAL_BROAD_CATCH | |
|
||||
| 3541 | INTERNAL_BROAD_CATCH | |
|
||||
| 3634 | INTERNAL_BROAD_CATCH | |
|
||||
| 3647 | INTERNAL_BROAD_CATCH | |
|
||||
| 4069 | INTERNAL_BROAD_CATCH | |
|
||||
| 4097 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 4099 | INTERNAL_BROAD_CATCH | |
|
||||
| 4191 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 4236 | INTERNAL_BROAD_CATCH | |
|
||||
| 4348 | INTERNAL_BROAD_CATCH | |
|
||||
| 4445 | INTERNAL_BROAD_CATCH | |
|
||||
| 4474 | INTERNAL_BROAD_CATCH | |
|
||||
| 4503 | INTERNAL_BROAD_CATCH | |
|
||||
|
||||
### `src\command_palette.py` — 1 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 120 | INTERNAL_SILENT_SWALLOW | |
|
||||
|
||||
### `src\commands.py` — 2 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 116 | UNCLEAR | |
|
||||
| 147 | UNCLEAR | |
|
||||
|
||||
### `src\conductor_tech_lead.py` — 2 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 97 | INTERNAL_RETHROW | |
|
||||
| 120 | UNCLEAR | |
|
||||
|
||||
### `src\diff_viewer.py` — 1 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 167 | UNCLEAR | |
|
||||
|
||||
### `src\external_editor.py` — 2 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 47 | INTERNAL_OPTIONAL_RETURN | |
|
||||
| 56 | INTERNAL_OPTIONAL_RETURN | |
|
||||
|
||||
### `src\gemini_cli_adapter.py` — 3 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 155 | INTERNAL_RETHROW | |
|
||||
| 173 | INTERNAL_RETHROW | |
|
||||
| 174 | INTERNAL_RETHROW | |
|
||||
|
||||
### `src\gui_2.py` — 42 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 65 | UNCLEAR | |
|
||||
| 69 | UNCLEAR | |
|
||||
| 216 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 241 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 567 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 591 | INTERNAL_BROAD_CATCH | |
|
||||
| 684 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 731 | INTERNAL_BROAD_CATCH | |
|
||||
| 742 | INTERNAL_BROAD_CATCH | |
|
||||
| 757 | INTERNAL_RETHROW | |
|
||||
| 760 | INTERNAL_RETHROW | |
|
||||
| 905 | INTERNAL_BROAD_CATCH | |
|
||||
| 979 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 1079 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 1123 | INTERNAL_BROAD_CATCH | |
|
||||
| 1172 | INTERNAL_BROAD_CATCH | |
|
||||
| 1198 | INTERNAL_BROAD_CATCH | |
|
||||
| 1223 | INTERNAL_BROAD_CATCH | |
|
||||
| 1285 | INTERNAL_BROAD_CATCH | |
|
||||
| 1335 | INTERNAL_BROAD_CATCH | |
|
||||
| 1344 | INTERNAL_BROAD_CATCH | |
|
||||
| 1398 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 1418 | INTERNAL_BROAD_CATCH | |
|
||||
| 1444 | INTERNAL_BROAD_CATCH | |
|
||||
| 1479 | INTERNAL_BROAD_CATCH | |
|
||||
| 1613 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 3201 | INTERNAL_BROAD_CATCH | |
|
||||
| 3436 | INTERNAL_BROAD_CATCH | |
|
||||
| 3620 | INTERNAL_BROAD_CATCH | |
|
||||
| 3756 | INTERNAL_BROAD_CATCH | |
|
||||
| 3783 | INTERNAL_BROAD_CATCH | |
|
||||
| 4405 | INTERNAL_BROAD_CATCH | |
|
||||
| 4823 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 4836 | INTERNAL_BROAD_CATCH | |
|
||||
| 5417 | INTERNAL_BROAD_CATCH | |
|
||||
| 5544 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 5826 | INTERNAL_BROAD_CATCH | |
|
||||
| 5960 | INTERNAL_BROAD_CATCH | |
|
||||
| 6807 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 7142 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 7158 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 7248 | INTERNAL_BROAD_CATCH | |
|
||||
|
||||
### `src\log_pruner.py` — 1 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 117 | INTERNAL_RETHROW | |
|
||||
|
||||
### `src\markdown_helper.py` — 2 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 123 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 200 | UNCLEAR | |
|
||||
|
||||
### `src\mcp_client.py` — 46 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 171 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 191 | INTERNAL_BROAD_CATCH | |
|
||||
| 229 | INTERNAL_BROAD_CATCH | |
|
||||
| 254 | INTERNAL_BROAD_CATCH | |
|
||||
| 266 | INTERNAL_BROAD_CATCH | |
|
||||
| 395 | INTERNAL_BROAD_CATCH | |
|
||||
| 414 | INTERNAL_BROAD_CATCH | |
|
||||
| 430 | INTERNAL_BROAD_CATCH | |
|
||||
| 451 | INTERNAL_BROAD_CATCH | |
|
||||
| 473 | INTERNAL_BROAD_CATCH | |
|
||||
| 492 | INTERNAL_BROAD_CATCH | |
|
||||
| 509 | INTERNAL_BROAD_CATCH | |
|
||||
| 523 | INTERNAL_BROAD_CATCH | |
|
||||
| 537 | INTERNAL_BROAD_CATCH | |
|
||||
| 555 | INTERNAL_BROAD_CATCH | |
|
||||
| 576 | INTERNAL_BROAD_CATCH | |
|
||||
| 593 | INTERNAL_BROAD_CATCH | |
|
||||
| 610 | INTERNAL_BROAD_CATCH | |
|
||||
| 624 | INTERNAL_BROAD_CATCH | |
|
||||
| 645 | INTERNAL_BROAD_CATCH | |
|
||||
| 695 | INTERNAL_BROAD_CATCH | |
|
||||
| 713 | INTERNAL_BROAD_CATCH | |
|
||||
| 739 | INTERNAL_BROAD_CATCH | |
|
||||
| 768 | INTERNAL_BROAD_CATCH | |
|
||||
| 788 | INTERNAL_BROAD_CATCH | |
|
||||
| 818 | INTERNAL_BROAD_CATCH | |
|
||||
| 843 | INTERNAL_BROAD_CATCH | |
|
||||
| 872 | INTERNAL_BROAD_CATCH | |
|
||||
| 893 | INTERNAL_BROAD_CATCH | |
|
||||
| 913 | INTERNAL_BROAD_CATCH | |
|
||||
| 936 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 951 | INTERNAL_BROAD_CATCH | |
|
||||
| 974 | INTERNAL_BROAD_CATCH | |
|
||||
| 987 | UNCLEAR | |
|
||||
| 989 | INTERNAL_BROAD_CATCH | |
|
||||
| 1012 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 1026 | INTERNAL_BROAD_CATCH | |
|
||||
| 1047 | INTERNAL_BROAD_CATCH | |
|
||||
| 1071 | INTERNAL_BROAD_CATCH | |
|
||||
| 1106 | INTERNAL_BROAD_CATCH | |
|
||||
| 1140 | INTERNAL_BROAD_CATCH | |
|
||||
| 1223 | INTERNAL_BROAD_CATCH | |
|
||||
| 1249 | INTERNAL_BROAD_CATCH | |
|
||||
| 1268 | INTERNAL_BROAD_CATCH | |
|
||||
| 1311 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 1316 | INTERNAL_SILENT_SWALLOW | |
|
||||
|
||||
### `src\models.py` — 2 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 268 | INTERNAL_RETHROW | |
|
||||
| 1082 | UNCLEAR | |
|
||||
|
||||
### `src\multi_agent_conductor.py` — 4 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 317 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 468 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 518 | UNCLEAR | |
|
||||
| 636 | INTERNAL_SILENT_SWALLOW | |
|
||||
|
||||
### `src\orchestrator_pm.py` — 1 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 113 | INTERNAL_BROAD_CATCH | |
|
||||
|
||||
### `src\outline_tool.py` — 1 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 70 | INTERNAL_RETHROW | |
|
||||
|
||||
### `src\presets.py` — 2 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 35 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 44 | INTERNAL_SILENT_SWALLOW | |
|
||||
|
||||
### `src\project_manager.py` — 2 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 32 | INTERNAL_OPTIONAL_RETURN | |
|
||||
| 98 | UNCLEAR | |
|
||||
|
||||
### `src\rag_engine.py` — 9 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 29 | INTERNAL_RETHROW | |
|
||||
| 32 | INTERNAL_RETHROW | |
|
||||
| 33 | INTERNAL_BROAD_CATCH | |
|
||||
| 36 | INTERNAL_RETHROW | |
|
||||
| 224 | INTERNAL_BROAD_CATCH | |
|
||||
| 247 | INTERNAL_BROAD_CATCH | |
|
||||
| 255 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 261 | INTERNAL_BROAD_CATCH | |
|
||||
| 290 | INTERNAL_BROAD_CATCH | |
|
||||
|
||||
### `src\session_logger.py` — 2 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 191 | UNCLEAR | |
|
||||
| 230 | INTERNAL_OPTIONAL_RETURN | |
|
||||
|
||||
### `src\shell_runner.py` — 3 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 95 | INTERNAL_RETHROW | |
|
||||
| 98 | INTERNAL_RETHROW | |
|
||||
| 99 | UNCLEAR | |
|
||||
|
||||
### `src\summarize.py` — 3 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 36 | UNCLEAR | |
|
||||
| 183 | UNCLEAR | |
|
||||
| 187 | UNCLEAR | |
|
||||
|
||||
### `src\theme_models.py` — 3 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 166 | INTERNAL_RETHROW | |
|
||||
| 190 | INTERNAL_SILENT_SWALLOW | |
|
||||
| 217 | INTERNAL_SILENT_SWALLOW | |
|
||||
|
||||
### `src\vendor_capabilities.py` — 1 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 42 | INTERNAL_RETHROW | |
|
||||
|
||||
### `src\warmup.py` — 2 sites
|
||||
|
||||
| Line | Category | Note |
|
||||
|---|---|---|
|
||||
| 96 | INTERNAL_RETHROW | |
|
||||
| 185 | INTERNAL_BROAD_CATCH | |
|
||||
|
||||
|
||||
## Summary by category
|
||||
|
||||
| Category | Count |
|
||||
|---|---|
|
||||
| INTERNAL_BROAD_CATCH | 134 |
|
||||
| INTERNAL_COMPLIANT | 93 |
|
||||
| INTERNAL_SILENT_SWALLOW | 46 |
|
||||
| INTERNAL_RETHROW | 30 |
|
||||
| INTERNAL_PROGRAMMER_RAISE | 29 |
|
||||
| UNCLEAR | 20 |
|
||||
| BOUNDARY_SDK | 19 |
|
||||
| BOUNDARY_FASTAPI | 15 |
|
||||
| BOUNDARY_CONVERSION | 12 |
|
||||
| INTERNAL_OPTIONAL_RETURN | 5 |
|
||||
@@ -0,0 +1,94 @@
|
||||
"""Phase 12.5: Triage the post-fix audit findings.
|
||||
|
||||
For each file with violations/UNCLEAR, list the sites with file:line + category + note.
|
||||
Group by file. Save to docs/reports/PHASE12_TRIAGE_20260617.md.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
import json
|
||||
from pathlib import Path
|
||||
from collections import defaultdict
|
||||
|
||||
with open(r"docs/reports/PHASE12_AUDIT_POST_FIX_20260617.json") as f:
|
||||
d = json.load(f)
|
||||
|
||||
# Group by file
|
||||
by_file = defaultdict(list)
|
||||
for f_info in d["files"]:
|
||||
fname = f_info["filename"]
|
||||
for finding in f_info["findings"]:
|
||||
if finding["category"] in ("INTERNAL_SILENT_SWALLOW", "INTERNAL_BROAD_CATCH",
|
||||
"INTERNAL_OPTIONAL_RETURN", "UNCLEAR", "INTERNAL_RETHROW"):
|
||||
by_file[fname].append(finding)
|
||||
|
||||
# Phase 12 plan files (priority order)
|
||||
priority_files = [
|
||||
"src/api_hooks.py",
|
||||
"src/warmup.py",
|
||||
"src/startup_profiler.py",
|
||||
"src/file_cache.py",
|
||||
"src/orchestrator_pm.py",
|
||||
"src/project_manager.py",
|
||||
"src/log_registry.py",
|
||||
"src/models.py",
|
||||
"src/multi_agent_conductor.py",
|
||||
"src/theme_2.py",
|
||||
"src/shell_runner.py",
|
||||
"src/session_logger.py",
|
||||
]
|
||||
|
||||
# Output
|
||||
out = []
|
||||
out.append("# Phase 12.5 — Triage of Post-Fix Audit Findings\n")
|
||||
out.append("**Date:** 2026-06-17 (auto-generated)\n")
|
||||
out.append("**Source:** `docs/reports/PHASE12_AUDIT_POST_FIX_20260617.json`\n")
|
||||
out.append("**Total sites:** " + str(d.get("total_sites", "?")) + "\n")
|
||||
out.append("**Violation sites:** " + str(d.get("violation_sites", "?")) + "\n")
|
||||
out.append("**UNCLEAR sites:** " + str(d.get("unclear_sites", "?")) + "\n\n")
|
||||
out.append("This triage enumerates the migration-target sites per file, ")
|
||||
out.append("in priority order (Phase 12 plan 12.6 sub-batches).\n\n")
|
||||
|
||||
for fname in priority_files:
|
||||
sites = by_file.get(fname, [])
|
||||
if not sites:
|
||||
out.append(f"## `{fname}` — NO violations (clean)\n\n")
|
||||
continue
|
||||
out.append(f"## `{fname}` — {len(sites)} sites to migrate\n\n")
|
||||
out.append("| Line | Category | Note |\n")
|
||||
out.append("|---|---|---|\n")
|
||||
for s in sorted(sites, key=lambda x: x["line"]):
|
||||
note = s.get("note", s.get("hint", "")).replace("|", "\\|").replace("\n", " ")[:120]
|
||||
out.append(f"| {s['line']} | {s['category']} | {note} |\n")
|
||||
out.append("\n")
|
||||
|
||||
# Catch-all: other files with violations
|
||||
out.append("\n## Other files with violations (not in priority list)\n\n")
|
||||
for fname in sorted(by_file.keys()):
|
||||
if fname in priority_files:
|
||||
continue
|
||||
sites = by_file[fname]
|
||||
out.append(f"### `{fname}` — {len(sites)} sites\n\n")
|
||||
out.append("| Line | Category | Note |\n")
|
||||
out.append("|---|---|---|\n")
|
||||
for s in sorted(sites, key=lambda x: x["line"]):
|
||||
note = s.get("note", s.get("hint", "")).replace("|", "\\|").replace("\n", " ")[:120]
|
||||
out.append(f"| {s['line']} | {s['category']} | {note} |\n")
|
||||
out.append("\n")
|
||||
|
||||
# Total counts
|
||||
out.append("\n## Summary by category\n\n")
|
||||
out.append("| Category | Count |\n|---|---|\n")
|
||||
from collections import Counter
|
||||
cats = Counter()
|
||||
for f_info in d["files"]:
|
||||
for finding in f_info["findings"]:
|
||||
cats[finding["category"]] += 1
|
||||
for c, n in cats.most_common():
|
||||
out.append(f"| {c} | {n} |\n")
|
||||
|
||||
p = Path("docs/reports/PHASE12_TRIAGE_20260617.md")
|
||||
p.write_text("".join(out), encoding="utf-8", newline="\n")
|
||||
print(f"wrote {p}: {len(''.join(out))} chars")
|
||||
print(f"\nPriority file summary:")
|
||||
for fname in priority_files:
|
||||
sites = by_file.get(fname, [])
|
||||
print(f" {fname}: {len(sites)} sites")
|
||||
@@ -0,0 +1,13 @@
|
||||
"""Show api_hooks.py violations."""
|
||||
import json
|
||||
with open(r"docs/reports/PHASE12_AUDIT_POST_FIX_20260617.json") as f:
|
||||
d = json.load(f)
|
||||
for f_info in d["files"]:
|
||||
if f_info["filename"].endswith("api_hooks.py"):
|
||||
print(f"## api_hooks.py — {len(f_info['findings'])} findings")
|
||||
for finding in f_info["findings"]:
|
||||
if finding["category"] in ("INTERNAL_SILENT_SWALLOW", "INTERNAL_BROAD_CATCH", "INTERNAL_OPTIONAL_RETURN", "UNCLEAR", "INTERNAL_RETHROW"):
|
||||
note = finding.get("note", finding.get("hint", ""))[:120]
|
||||
ctx = finding.get("context", "")
|
||||
print(f" L{finding['line']:4d} [{finding['kind']:7s}] {finding['category']:30s} ctx={ctx:30s} note={note}")
|
||||
break
|
||||
Reference in New Issue
Block a user