22dc45498a
After Tier 2's Phase 3 commit 7fcce652 'migrate 8 INTERNAL_SILENT_SWALLOW
sites', the audit still shows 28 INTERNAL_SILENT_SWALLOW sites in
src/app_controller.py. The 8 sites were renamed with narrower exception
types and given logging.debug bodies — but logging.debug is NOT a drain
point per conductor/code_styleguides/error_handling.md:530:
'narrow except + log (sys.stderr.write / logging.*) only' |
INTERNAL_SILENT_SWALLOW | VIOLATION — logging is NOT a drain
Phase 6 fixes all 28 sites with proper Result[T] propagation:
Sub-phase 6.1: 2 signal handler sites (Pattern 3 drain: os._exit)
Sub-phase 6.2: 2 timeline-event sinks (stderr carry + instance state)
Sub-phase 6.3: 3 GUI state/property setters (Result helper sibling)
Sub-phase 6.4: 1 SDK boundary (_fetch_models.do_fetch)
Sub-phase 6.5: 10 background worker sites (_report_worker_error)
Sub-phase 6.6: 3 per-event handler sites (per-request error list)
Sub-phase 6.7: 6 helper/utility sites (Result propagates upward)
Sub-phase 6.8: audit --strict gate + 28 site tests + report rewrite
Audit gate: uv run python scripts/audit_exception_handling.py --src
src/app_controller.py --strict must exit 0. No logging.debug in
except bodies (verified by grep). Every except body returns
Result(data=..., errors=[ErrorInfo(original=e)]) or reaches a real
drain point (os._exit, stderr carry, instance state for sub-track 4).
Per user reply 2026-06-18: stderr/sys.stderr logging is acceptable
terminal drain until sub-track 4 lands the GUI error display.
Spec.md §12-§21 (addendum); plan.md Phase 6 (8 sub-phases);
state.toml adds 18 t6_* tasks; metadata.json adds 4 verification
criteria + 4 risk_register entries; tracks.md row updated.
Refs:
- docs/reports/TRACK_COMPLETION_result_migration_app_controller_20260618.md
(the Phase 5 report this addendum supersedes)
- conductor/tracks/result_migration_20260616/spec.md (umbrella)