Registers com.kisani.jarvis.feed.refresh as a BGAppRefreshTask. On each fire it fetches the latest 40 stories and upserts CachedStory rows so the SwiftData cache is warm before the user opens the app. Already-cached rows have signalScore / sourceCount refreshed in-place. Single ModelContainer owned by JarvisApp and shared via BackgroundRefreshManager.container to avoid multi-container conflicts. BG task ID registered in AppDelegate and declared in project.yml. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>