Reference creatortrack news hub
CreatorTrack News app (/rss) has a Google-News-style briefing. MERGED + DEPLOYED to prod 2026-07-05 (merge commit b76457c; migration 20260705T201500_news_hub_catalog.sql applied to lifeos DB, then forge_creatortrack_deploy.sh; prod :3070 healthy, /rss + /api/apps/rss no 5xx). rss_feeds now has category/catalog_id/homepage/last_fetched_at. Owner still needs to hit "Catalog" once in the live app to subscribe the 139 outlets (per-workspace, not auto-run).
lib/news-catalog.ts: 139 curated outlets, 11 national categories (incl. Opinion + Reads/longform) + local-austin/texas/omaha; all URLs live-validated 2026-07-05. Reuters/AP/The Athletic ride Google News site-search RSS (news.google.com/rss/search?q=site:<domain>).syncCatalogop subscribes idempotently.- Paywall chain (
lib/news-article.ts): original -> Googlebot UA -> Wayback Machine -> archive.today mirrors (archive.ph/today/md; 404 = no snapshot, 429 = 10-min host cooldown). Full mode =archive.ph/newest/<url>link-out. archive.today 429-throttles Console's IP intermittently; UI degrades to links. - Read Later stays single-source via knowledge
saveArticle; archive text lands via{ prefetched }while note keeps the real URL. - Migration
20260705T201500_news_hub_catalog.sql(rss_feeds category/catalog_id/homepage/last_fetched_at) applied to dev clone only; run via forge_workspace_migrate.py at deploy.
Why: future sessions touching the News app or merging this branch need the catalog/archive design and the pending-migration gotcha.
How to apply: work in ~/forge-suite-wt/feat/news-hub; full detail in [[creatortrack-dev-slot-lifecycle]] and forge handoff memory/handoffs/creatortrack-news-hub-briefing-2026-07-05.md.