Problem
mcp/server.py:485-499 wraps spool.drain() and the retention scheduler call in broad excepts that swallow exceptions silently with no logging. If either silently fails for weeks, no one will know — the retention scheduler in particular is invisible (it runs in the background of the next retrieve call).
Suggested fix
Route these exceptions into the hook_errors table the way hooks/_error_log.py already does, or at minimum log via logging.exception on a named logger. The point is that a failure should produce a discoverable diagnostic, not vanish.
Acceptance criteria
Problem
mcp/server.py:485-499wrapsspool.drain()and the retention scheduler call in broad excepts that swallow exceptions silently with no logging. If either silently fails for weeks, no one will know — the retention scheduler in particular is invisible (it runs in the background of the next retrieve call).Suggested fix
Route these exceptions into the
hook_errorstable the wayhooks/_error_log.pyalready does, or at minimum log vialogging.exceptionon a named logger. The point is that a failure should produce a discoverable diagnostic, not vanish.Acceptance criteria