Task T5 resolution order evidence ServiceImageResolver implements lazy raw-filename resolution for service imagery: - keyVisualFor(Service $service): checks $service->key_visual_filename first. - backgroundFor(Service $service): checks $service->background_filename first. - If the per-service filename is null or missing on Storage::disk('public'), the resolver checks the matching global Setting key. - Global keys: current_key_visual, current_background. - Return contract: raw relative filename such as slides/kv.jpg, never /storage/... URL. - Pure behavior: no model updates, no Setting writes, no Storage writes. Verification: - ddev exec php artisan test tests/Feature/ServiceImageResolverTest.php: PASS (5 tests) - ddev exec php artisan test: PASS (519 tests, 2627 assertions) - ddev exec ./vendor/bin/pint app/Services/ServiceImageResolver.php tests/Feature/ServiceImageResolverTest.php: PASS