1005a057f0
- Move classify_persistence_error into hermes_state beside is_disk_full_error and delegate the disk bucket to it (fixes 'ENOSPC writing state.db' and 'not enough space' classifying as unknown). run_agent keeps a thin lazy delegating wrapper so the documented import path and fast import survive. - Classify CompressionSessionBusyError (and its RPC-wrapped message forms) as 'locked': the motivating #81227 failure mode stringifies to 'is being compressed by another writer', which the substring heuristic missed. - Export PERSISTENCE_ERROR_CAUSES and iterate it in the cron explainer suppression instead of a hardcoded tuple, so a future cause bucket cannot silently desynchronize cron delivery. - Hedge the gateway locked/unknown recovery wording ('should already be saved' instead of 'was recorded') to match the explainer - the early turn-start persist may also have failed. - Drop STATE_DB_WAL_WARN_BYTES (speculative dead constant with no consumer; the pre-existing 50 MB doctor WAL check covers the warning). - Tests: compression-busy classification, is_disk_full_error delegation, causes-tuple coverage; mutation-checked red-green.