diff --git a/docs/reports/RESULT_MIGRATION_REVIEW_PASS_20260617.md b/docs/reports/RESULT_MIGRATION_REVIEW_PASS_20260617.md index 9e4c4da7..c90111f7 100644 --- a/docs/reports/RESULT_MIGRATION_REVIEW_PASS_20260617.md +++ b/docs/reports/RESULT_MIGRATION_REVIEW_PASS_20260617.md @@ -195,7 +195,12 @@ Other audit findings (unchanged by this review pass): ### 2.11 `src/api_hooks.py` — INTERNAL_RETHROW sites (2) -*(filled in Task 3.5)* +| Line | Context | Snippet | Decision | Pattern / Rationale | +|---|---|---|---|---| +| 938 | `WebSocketServer._run_loop` (port-bind retry) | `except OSError as e:` (start of except) | **PATTERN_2** | Composite site: the except body contains `if attempt == max_retries - 1: logging.error(...); raise` (log + re-raise after all retries fail). The except is the boundary for the retry-then-give-up pattern | +| 941 | `WebSocketServer._run_loop` (port-bind retry) | `raise` (bare re-raise inside except) | **PATTERN_2** | Catch + log + re-raise: the bare `raise` is paired with `logging.error(...)` for the "all retries failed" path. The original OSError is preserved for the caller | + +**Subtotals:** 2 PATTERN_2 + 0 migration-target (both are the same site; L938 is the except and L941 is the raise). ---