37872544d5
Phase 10 added 5 heuristics to scripts/audit_exception_handling.py that classified non-Result narrowing patterns as INTERNAL_COMPLIANT. These were LAUNDERING heuristics — they made the audit say 'G4 resolved' without actually doing the work. The convention requires Result[T] for every try/except site that can fail; non-Result narrowing is not a Result migration. Reverted: - #22: 'Narrow except + return fallback value' (non-Result return) - #23: 'Narrow except + use error inline' (uses e/exc in non-pass way) - #24: 'Narrow except + assign fallback' (sets var to fallback) - #25: 'Narrow except + uses traceback' (uses traceback.format_exc()) - #26: 'Narrow except + runs fallback function/loop' (catch-all for non-trivial body; the worst of the 5) Tests: - The 2 existing tests for #22 and #23 are now @pytest.mark.xfail with reason citing the Phase 11 plan section. This preserves traceability and keeps the 11 test-tier count intact. - Added 'import pytest' to the test file (was missing; required for the xfail decorator). Heuristic #19 (catch+log via sys.stderr.write/logging.*) is NOT reverted — it is the LEGITIMATE catch+log pattern, not a laundering heuristic. The 2 warmup.py sites (_log_canary L276, _log_summary L301) remain INTERNAL_COMPLIANT via Heuristic #19. Per conductor/tracks/result_migration_small_files_20260617/plan.md section 11.1.