Problem
17 sites catch all exceptions including KeyboardInterrupt.
Why
Typed handling exposes bugs; chained logs help incidents.
Outcome
All sites use ApexException or specific subclasses; logger.exception for context.
Acceptance
Files
app/tasks/webhook_tasks.py
app/tasks/sla_tasks.py
app/api/v1/endpoints/jobs.py
app/api/v1/endpoints/outages.py
app/services/sla_service.py
app/main.py
app/core/lock.py
app/middleware/correlation.py
Problem
17 sites catch all exceptions including KeyboardInterrupt.
Why
Typed handling exposes bugs; chained logs help incidents.
Outcome
All sites use
ApexExceptionor specific subclasses;logger.exceptionfor context.Acceptance
grep "except Exception"returns 0 without noqaFiles
app/tasks/webhook_tasks.pyapp/tasks/sla_tasks.pyapp/api/v1/endpoints/jobs.pyapp/api/v1/endpoints/outages.pyapp/services/sla_service.pyapp/main.pyapp/core/lock.pyapp/middleware/correlation.py