.vbw-planning/milestones/07-rails-audit-and-refactoring/04-job-pipeline-reliability/02-SUMMARY.md
554f8cd test(04-02): add error classification tests for FaviconFetchJob and DownloadContentImagesJob19bb3b8 feat(04-02): add transient vs fatal error classification to FaviconFetchJob6bcd0ac feat(04-02): add transient vs fatal error classification to DownloadContentImagesJob911c17e fix(04-02): add deadlock rescue to 4 jobs, fix ScrapeItemJob log levelsapp/jobs/source_monitor/favicon_fetch_job.rb -- TRANSIENT_ERRORS constant, transient rescue clause, log_transient_error methodapp/jobs/source_monitor/download_content_images_job.rb -- TRANSIENT_ERRORS constant, transient rescue in per-image loop, log_image_error methodapp/jobs/source_monitor/scrape_item_job.rb -- rescue_from Deadlocked, dynamic log levelapp/jobs/source_monitor/item_cleanup_job.rb -- rescue_from Deadlocked with jitter retryapp/jobs/source_monitor/log_cleanup_job.rb -- rescue_from Deadlocked with jitter retryapp/jobs/source_monitor/schedule_fetches_job.rb -- rescue_from Deadlocked with jitter retryapp/jobs/source_monitor/import_session_health_check_job.rb -- clarified inline rescue commenttest/jobs/source_monitor/favicon_fetch_job_test.rb -- 2 new tests (transient re-raise, fatal handling)test/jobs/source_monitor/download_content_images_job_test.rb -- 2 new tests (transient re-raise, per-image skip)rescue ActiveRecord::Deadlocked; raise was NOT dead code as the plan stated. It prevents rescue StandardError from swallowing deadlocks before rescue_from can catch them. Retained with clarified comment instead of removing.